2016-10-07 3 views
0

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

if (doubleBackToExitPressedOnce) 
{ 
      replaceFragment(new HomeActivity()); 
      super.onBackPressed(); 
      return; 
     } 

     this.doubleBackToExitPressedOnce = true; 
     Toast.makeText(this, "Please click BACK again to exit.", Toast.LENGTH_SHORT).show(); 

     new Handler().postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       doubleBackToExitPressedOnce = false; 
      } 
     }, 2000); 

любезно помогите мне.

+0

является «HomeActivity» фрагментом? –

+0

да его фрагмент –

+0

у кого есть идеи, пожалуйста, помогите мне. –

ответ

0

просто добавить это в вашем методе запуска обработчика

  @Override 
      public void run() { 
       replaceFragment(new HomeActivity()); 
       ActivityName.super.onBackPressed(); 
       doubleBackToExitPressedOnce = false; 
      } 

ИЛИ сделать еще способ, как этот

else{ 
replaceFragment(new HomeActivity()); 
      super.onBackPressed(); 
} 
+0

работает неправильно. –

+0

который вы реализовали? –

+0

if (doubleBackToExitPressedOnce) { } else –

0
private static final int BACK_PRESS = 76; 

private Handler mHandler = new Handler() { 
    @Override 
    public void handleMessage(Message msg) { 
     super.handleMessage(msg); 
     if (BACK_PRESS == msg.what) { 
      goBack(); 
     } 
    } 
}; 

private void goBack() { 
    super.onBackPressed(); 
} 

@Override 
public void onBackPressed() { 
    if (mHandler.hasMessages(BACK_PRESS)) { 
     mHandler.removeMessages(BACK_PRESS); 
     replaceFragment(new HomeActivity()); 
    } else { 
     mHandler.sendEmptyMessageDelayed(BACK_PRESS, 500); // Your activity will close after 500ms 
    } 
} 

вы можете использовать обработчик по-разному для вашего дела.

+0

что такое msg.what? in if condition –

+0

Это просто пустое сообщение, отправленное обработчику с помощью mHandler.sendEmptyMessageDelayed (BACK_PRESS, 500) ;. Это создаст пустое сообщение с «BACK_PRESS» в качестве значения «что». –

+0

Это не сработало? –