2017-06-22 66 views
0

所以我有一个android应用程序,主要活动有3个片段。带有倒数计时器的片段,用于设置的片段和第三个片段。我正在尝试启动计时器,并浏览应用程序,例如打开其他片段,同时继续计时器进行倒计时。但不幸的是,一旦我启动计时器并导航到另一个片段,计时器就会停止。当我返回到计时器片段时,它将计时器恢复到原始状态,就好像它从未开始一样。我试过Fragment.setRetainInstance(布尔),没有运气。任何想法,我应该如何让片段继续在后台作为开放的不同碎片运行?如果不可见,在后台运行一个片段

public void selectDrawerItem(MenuItem menuItem) { 
     Fragment fragment = null; 
     Class fragmentClass; 
     switch(menuItem.getItemId()) { 
      case R.id.nav_first_fragment: 
       fragmentClass = HomeFragment.class; 
       break; 
      case R.id.nav_second_fragment: 
       fragmentClass = StatsFragment.class; 
       break; 
      case R.id.nav_third_fragment: 
       fragmentClass = SettingsFragment.class; 
       break; 
      default: 
       fragmentClass = HomeFragment.class; 
     } 

     try { 
      fragment = (Fragment) fragmentClass.newInstance(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     FragmentManager fragmentManager = getSupportFragmentManager(); 
     fragmentManager.beginTransaction().replace(R.id.flContent, fragment).commit(); 





     menuItem.setChecked(true); 
     setTitle(menuItem.getTitle()); 
     mDrawer.closeDrawers(); 
    } 
+0

你在哪里开始你的计时器?请使用处理程序在容器活动onResume中启动它。并且永远不要忘记在Activity的OnStop中停止它。 –

+1

所以你说的是让计时器在容器活动中运行,而不是在实际的片段中运行。运行容器活动并将其单独显示在片段上 –

+0

是的,我在说so..try并让我知道 –

回答

0

检查此answer尝试添加片段而不是替换。

UPDATE

试试这个answer它具有更多的细节。我认为它可以帮助

+0

该片段与之前的片段视觉上重叠。所以它只是一堆坐在彼此顶部的图像和文字。计时器仍在重置。 –

+0

你可以把你的代码用于充气片段 –

+0

我已经更新了我的答案检查它..它会帮助你 –