如何 运行 Fragment 中的 CountDownTimer
How to run CountDownTimer in Fragment
我有一个用户 Activity class,它有抽屉菜单(包括主页、我的个人资料等)。当用户单击菜单项之一时,我将加载 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
这是加载片段:
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 时,我将 运行 一些方法 ()。
但是我不能那样做。因为每次用户浏览新项目时,然后返回主页菜单项时,都会创建新的 HomePageFragment(),因此 CountDownTimer 以60 年代一次又一次。即使用户导航另一个菜单,我也希望 CounDownTimer 运行。
请注意,我曾尝试将 HomePageFragment 属性创建为全局属性。但它没有用。 (就像 2 个计时器倒计时。一个说 60-59...另一个说 30-29...)
这里的问题是,每次用户导航到另一个项目时,您的 Fragment
都会被销毁。
解决这个问题
1.Either 在您的主机中创建计时器 activity 而不是片段,可能在 navigationItemSelectedListener()
中
2.Make 确保您的片段不会每次都被破坏。检查 How to resume Fragment from BackStack if exists
我有一个用户 Activity class,它有抽屉菜单(包括主页、我的个人资料等)。当用户单击菜单项之一时,我将加载 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
这是加载片段:
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 时,我将 运行 一些方法 ()。
但是我不能那样做。因为每次用户浏览新项目时,然后返回主页菜单项时,都会创建新的 HomePageFragment(),因此 CountDownTimer 以60 年代一次又一次。即使用户导航另一个菜单,我也希望 CounDownTimer 运行。
请注意,我曾尝试将 HomePageFragment 属性创建为全局属性。但它没有用。 (就像 2 个计时器倒计时。一个说 60-59...另一个说 30-29...)
这里的问题是,每次用户导航到另一个项目时,您的 Fragment
都会被销毁。
解决这个问题
1.Either 在您的主机中创建计时器 activity 而不是片段,可能在 navigationItemSelectedListener()
2.Make 确保您的片段不会每次都被破坏。检查 How to resume Fragment from BackStack if exists