2016-08-23 6 views
2

単純なナビゲーションドロワーActivityを使用しています。また、onBackPressed()の下にdoubleBackToExitPressedOnceメソッドを実装しました。バック・プレスのナビゲーション・ドロワの開閉動作を定義済みの場所。だから私のようなコードを変更:ナビゲーションドロワーを使用してフィーチャーを終了させる方法を2回処理する方法

@Override 
public void onBackPressed() { 
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    assert drawer != null; 

    if (drawer.isDrawerOpen(GravityCompat.START)) { 
     drawer.closeDrawer(GravityCompat.START); 
    } 
    else if (doubleBackToExitPressedOnce) { 
     super.onBackPressed(); 
    } 

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

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

オープンナビゲーション引き出しは、私はそれが最初にして、私はアプリを終了したい近いため、バックボタンをクリックした時に今私の問題があります。しかし、「終了するためにもう一度押す」と表示されるたびに。場合によっては非常に迷惑です。私を助けてください。

答えて

1

あなたActivitydrawerインスタンス変数を作成します。

DrawerLayout drawer; 

onCreate()でそれを初期化します。

drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 

そして、このような何か作業をする必要があります:

@Override 
public void onBackPressed() { 
    if (drawer.isDrawerOpen(GravityCompat.START)) { 
     drawer.closeDrawer(GravityCompat.START); 
    } else if (doubleBackToExitPressedOnce) { 
     super.onBackPressed(); 
    } else { 
     doubleBackToExitPressedOnce = true; 
     Toast.makeText(this, "Press again to exit", Toast.LENGTH_SHORT).show(); 

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

優秀、あなたは私の一日を作った。ありがとう – MaAc

0

はこれを試してみてください。..

if (drawer.isDrawerOpen(GravityCompat.START)) { 
    drawer.closeDrawer(GravityCompat.START); 
} 
else if (doubleBackToExitPressedOnce) { 
this.doubleBackToExitPressedOnce = true; 
Toast.makeText(this, "Press again to exit", Toast.LENGTH_SHORT).show(); 
new Handler().postDelayed(new Runnable() { 
    @Override 
    public void run() { 
     doubleBackToExitPressedOnce = false; 
    } 
}, 2000); 

} 

else 
{ 
super.onBackPressed(); 
//finish(); 
} 
0

あなたは下記のようreturnステートメントを使用する必要があります。

@Override 
    public void onBackPressed() { 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     assert drawer != null; 

     if (drawer.isDrawerOpen(GravityCompat.START)) { 
      drawer.closeDrawer(GravityCompat.START); 
      return; 
     } 
     else if (doubleBackToExitPressedOnce) { 
      super.onBackPressed(); 
      return; 
     } 

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

     new Handler().postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       doubleBackToExitPressedOnce = false; 
      } 
     }, 2000); 
    } 
関連する問題