2017-12-30 44 views
1

私はイメージビューで単純なアクティビティを使用していますが、使用されている単純なmenuItemがpreviusアクティビティに戻ってきました。 戻るボタンは、onOptionItemSelectedメニューのfinish()を呼び出すよりも速いです。

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()){ 
     case android.R.id.home: 
      finish(); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

は、私はちょうど私が、以前の活動に戻ってアンドロイドを来て戻るボタンを押すと、本当に速いそれを行うことを実現しますが、上記のメニュー項目を押すと、それは第二の無駄。どうして?

答えて

1

リターンを行うためのデフォルトの方法は、バックfinish()を呼び出すことによって

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()){ 
     case android.R.id.home: 
      return super.onOptionsItemSelected(item); 
    } 
} 

あなたはすなわちonDestroy()を呼び出すために、破壊のための現在の活動をスケジュールです。これは、いくつかのクリーンアップを行い、オーバーヘッドを生成し、そこで何らかのレイテンシを経験します。したがって、実際にダイアログボックスやカーソルを閉じるために、finish()を使用する必要がない場合は、省略して、提供されているデフォルトのソリューションを使用してください。

希望すると便利です。

+0

私は試してみると、これは前の活動に戻ってこない!何も起こりません、私は自分のコードを投稿します..アクティビティは通常の意図からオープンしています.. @Override public boolean onOptionsItemSelected(MenuItem item){ switch(item.getItemId()){ case android.R.id.home : 返されるsuper.onOptionsItemSelected(item); ケースR.id.share_image: // TODO return true; デフォルト: return super.onOptionsItemSelected(item); } } –

+0

マニフェストファイルにアクティビティの論理的な親を指定する必要があります。その属性は 'android:parentActivityName'です。 – user8