Как запустить CountDownTimer во фрагменте - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть один класс 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();
    }
}

Теперь я запустил CountDownTimer (60 секунд) в HomePageFragment, когда счетчик равен 0, я буду запускать некоторые методы ().

Однако Я не могу этого сделать. Поскольку каждый раз, когда пользователь перемещается по новому элементу, затем, когда он возвращается к пункту меню HomePage, создается новый HomePageFragment (), поэтому CountDownTimer начинается снова и снова с 60 секунд.То, что я хочу, чтобы CounDownTimer запускался, даже если пользователь переходит в другое меню.

Обратите внимание, что я пытался создать атрибут HomePageFragment как глобальный.Но это не сработало.(Как 2 таймера обратного отсчета. Один говорит 60-59 ... другой говорит 30-29 ...)

1 Ответ

0 голосов
/ 07 декабря 2018

Проблема здесь в том, что ваш Fragment уничтожается каждый раз, когда пользователь переходит к другому элементу.

Чтобы решить эту проблему

1.Либо создайте таймер в вашей активности хоста, а не фрагмент,возможно внутри navigationItemSelectedListener()

2. Убедитесь, что ваш фрагмент не уничтожается каждый раз.Проверьте Как возобновить фрагмент из BackStack, если существует

...