如何在Fragment中运行CountDownTimer

时间:2018-12-07 00:18:48

标签: java android-studio android-fragments countdowntimer

我有一个带抽屉菜单的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秒),当计数器为0时,我将运行一些方法()。

但是我不能这样做。因为每次用户浏览新项目时,然后回到Homepage菜单项时,都会创建新的HomePageFragment(),因此CountDownTimer一次又一次地以60s开始。即使用户导航另一个菜单,我也希望CounDownTimer运行什么。

请注意,我尝试将HomePageFragment属性创建为全局属性。但这没有用。 (就像2个计时器倒计时。一个说60-59 ...另一个说30-29 ...)

1 个答案:

答案 0 :(得分:1)

这里的问题是,每次用户导航到另一个项目时,您的Fragment就被销毁。

要解决这个问题

1。要么在您的主机活动中创建计时器,要么在片段中创建片段,也许在navigationItemSelectedListener()

2。确保片段不会每次都被破坏。选中How to resume Fragment from BackStack if exists