我有一个动态的tablayout但每次我按下按钮并再次重新进入我的应用程序,我的标签加倍,为什么?

问题描述 投票:-1回答:1

在我的TabLayout我在我的TabItemonCreate()方法动态创建我的登录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();
    }
}
android android-tablayout android-tabs fragmentpageradapter
1个回答
0
投票

尝试从MainActivity中的列表中删除静态关键字。而是使用final来阻止列表的重新初始化。它每次创建该标签,因为只要它们被杀死,静态的东西就会保持活力。在地球上创建选项卡并将其存储在列表中的专业方法是将该列表保存在viewpager适配器中。我很高兴这很有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.