如何在片段中运行倒计时程序

bvjxkvbb  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(314)

我有一个用户活动类,其中有抽屉菜单(包括主页,我的档案等…)。当用户单击其中一个菜单项时,我将加载诸如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中运行了倒计时(60秒),当counter为0时,我将运行一些方法()。
但是我不能那样做。因为每次用户浏览新项目时,当返回主页菜单项时,都会创建新的homepagefragment(),因此倒数计时器一次又一次以60秒开始。即使用户浏览另一个菜单,我也希望downtimer运行。
注意,我曾尝试将homepagefragment属性创建为global。但没用(就像2个计时器倒计时。一个说60-59。。。另一个说30-29……)

r6l8ljro

r6l8ljro1#

问题是,你的 Fragment 每次用户导航到另一个项目时都会被销毁。
为了解决这个问题
1.要么在宿主活动中创建计时器,要么在内存中创建片段 navigationItemSelectedListener() 2.确保你的碎片不会每次都被摧毁。检查如何从backstack恢复片段(如果存在)

相关问题