我有一个ViewPager。更改某些数据后,我通过调用ViewPager.setAdapter(new Adapter)再次为ViewPager设置适配器。我想知道的是,片段重新创建了(它跳转到onDestroyView,然后onCreateView),而我的[[Edittext无法再次设置文本。如果我从FragmentTransaction中删除所有Fragment,然后从setAdapter中删除,则Fragment创建一个新的->我Edittext很好地设置了文本。那么Fragment是否不是从UI线程重新创建本身? (因为我尝试了edditext.post和我的第一个方案中的edditext)。这是代码
适配器:public class PagerAdapter extends FragmentPagerAdapter {
private final ArrayList<Fragment> fmAct;
public PagerAdapter(FragmentManager supportFragmentManager, ArrayList<Fragment> fm) {
super(supportFragmentManager);
fmAct = fm;
}
@Override
public Fragment getItem(int position) {
return fmAct.get(position);
}
@Override
public int getCount() {
return fmAct.size();
}
@Override
public int getItemPosition(@NonNull Object object) {
return POSITION_NONE;
}
@Override
public CharSequence getPageTitle(int position) {
return ((PrFragment) getItem(position)).getFragmentName();
}
重新设置适配器时该怎么办
fm.clear(); fragmentAttendanceCome = new FragmentAttendanceCome(); fragmentAttendanceCome.setFragmentName(getString(R.string.title_attendance)); fragmentAttendanceCome.setParentActivity(this); fragmentAssessment = new FragmentAssessment(); fragmentAssessment.setFragmentName(getString(R.string.daily_evaluation)); fragmentAssessment.setParentActivity(this); fragmentInfo = new FragmentInfo(); fragmentInfo.setParentActivity(this); fragmentInfo.setFragmentName(getString(R.string.title_infomation)); fm.add(fragmentAttendanceCome); fm.add(fragmentAssessment); fm.add(fragmentInfo); viewPager.setAdapter(new PagerAdapter(getSupportFragmentManager(), fm));
这是我的片段:
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { textview.setText(data) // i already Bind it but i lazy to copy it,everything work well }