2016-10-07 19 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

ちょうどあなたがあなたのケースのための別の方法でハンドラを使用することができ、この

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 
    } 
} 

のような他の方法を作るあなたのハンドラの実行方法に

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

OR これを追加します。

+0

msg.whatとは何ですか? inの場合 –

+0

これは、mHandler.sendEmptyMessageDelayed(BACK_PRESS、500);を使用してハンドラに送信した空のメッセージです。これにより、 "what"値として "BACK_PRESS"という空のメッセージが作成されます。 –

+0

それは働かなかった? –

関連する問題