у меня динамическое табулирование, но каждый раз, когда я нажимаю кнопку «Назад» и снова захожу в приложение, моя вкладка удваивается, почему? - PullRequest
0 голосов
/ 27 апреля 2019

в моем TabLayout я создаю свой логин TabItem динамически по методу onCreate() моего MainActivity, но каждый раз, когда я выхожу из приложения с помощью кнопки back, и я снова захожу в свое приложение, оноснова создает этот логин TabItem, и поэтому он удваивает его каждый раз, я пытался проверить и использовать:

if(savedInstanceState == null) {
   // create the first tab
}

но это не сработало, не могли бы вы мне помочь?вот мой код для MainActivity:

public class MainActivity extends AppCompatActivity {


    TabLayout tabLayout;
    ViewPager viewPager;
    public static List<Fragment> fragments = new ArrayList<>();
    public static List<String> fragmentsTitle = new ArrayList<>();

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tabLayout = findViewById(R.id.myTabLayout);
        viewPager = findViewById(R.id.myViewPager);
        MyViewPagerAdapter Adapter = new MyViewPagerAdapter(getSupportFragmentManager());
        Adapter.createTab(new LoginFragment(), "Login", getSupportFragmentManager(), viewPager);
        viewPager.setAdapter(Adapter);
        tabLayout.setupWithViewPager(viewPager);
        tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {

            public void onTabSelected(TabLayout.Tab tab) {

            }

            public void onTabUnselected(TabLayout.Tab tab) {

            }

            public void onTabReselected(TabLayout.Tab tab) {

            }
        });
    }
}

и это код для FragmentPagerAdapter

public class MyViewPagerAdapter extends FragmentPagerAdapter {

    public MyViewPagerAdapter(FragmentManager manager) { super(manager);}

    public void createTab(Fragment fragment, String title, FragmentManager manager, ViewPager viewPager) {
        MyViewPagerAdapter Adapter = new MyViewPagerAdapter(manager);
        MainActivity.fragments.add(fragment);
        MainActivity.fragmentsTitle.add(title);
        Adapter.notifyDataSetChanged();
        viewPager.setAdapter(Adapter);
    }

    public Fragment getItem(int position) {
        return MainActivity.fragments.get(position);
    }

    public CharSequence getPageTitle(int position) {
        return MainActivity.fragmentsTitle.get(position);
    }

    public int getCount() {
        return MainActivity.fragments.size();
    }
}

1 Ответ

0 голосов
/ 28 апреля 2019

Попробуйте удалить статическое ключевое слово из списка в MainActivity.Вместо этого используйте final, чтобы предотвратить повторную инициализацию списка.Он создает эту вкладку каждый раз, потому что статические вещи остаются живыми, пока их убивают.И профессиональный способ создать вкладку и сохранить ее в списке - сохранить этот список в адаптере viewpager.Я рад, что это было полезно.

...