Какой поток какой Android использовать, когда фрагмент воссоздают с нуля? - PullRequest
0 голосов
/ 24 октября 2019

У меня есть ViewPager . При изменении некоторых данных я снова устанавливаю адаптер для ViewPager с помощью вызова ViewPager.setAdapter (новый адаптер) . Что мне интересно, фрагментвоссоздать (он переходит на onDestroyView , а затем onCreateView ), и мой Edittext не может снова установить текст. И если я удаляю весь Fragment из FragmentTransaction, а затемsetAdapter, Фрагмент создайте новый -> мой текст редактирования Правильно установите текст. Так что Фрагмент воссоздает сам себя НЕ из потока пользовательского интерфейса? (Потому что я пробую 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
}
...