我有一个带抽屉菜单的User Activity类(包括主页,我的个人资料等)。当用户单击菜单项之一时,我将加载片段,如HomePageFragment,MyProfilFragment等。
这是代码示例:
public void navigationItemSelectedListener(DrawerLayout drawerLayout, NavigationView navigationView) {
navigationView.setNavigationItemSelectedListener(menuItem -> {
menuItem.setChecked(true);
int menuId = menuItem.getItemId();
switch (menuId){
case R.id.home_menu_item:
loadFragment(new HomePageFragment());
break;
// goes like that
这是loadFragment:
public void loadFragment(Fragment fragment) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.user_page_activity_frame_layout, fragment);
fragmentTransaction.commit();
}
}
现在我已经在HomePageFragment中运行了CountDownTimer(60秒),当counter为0时,我将运行一些method()。
但是我做不到。由于每次用户浏览新项目时,然后返回到HomePage菜单项时,都会创建新的HomePageFragment(),因此CountDownTimer一次又一次地以60s开始。我希望CounDownTimer运行什么,即使用户浏览另一个菜单也是如此。
请注意,我尝试将HomePageFragment属性创建为全局属性。但这没有用。(像2个计时器倒计时。一个说60-59 ...另一个说30-29 ...)
这里的问题是,Fragment
每次用户导航到另一个项目时,您都会被破坏。
为了解决这个问题
1.要么在您的主机活动中创建计时器,要么在片段中创建片段 navigationItemSelectedListener()
2.确保您的片段不会每次都被破坏。检查如何从BackStack恢复片段(如果存在)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句