2017-09-01 2 views
0

私のフラグメント用のツールバーのバック/アップボタンは、ユーザーがクリックしたときにフラグメントをポップするのに問題ありませんが、ボタンを元に戻すと、onOptionsItemSelectedメソッドがトリガーされなくなりました。ハードウェアの[戻る]ボタンを押しても前に戻ることができますが、これはうまくいきません。フラグメントツールバーのバック/アップボタンが復旧後に機能しない

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 
    if (id == android.R.id.home) { 
     // [coded that issues log statements, pops the fragment not shown] 
    } 
} 

私は問題を再現:ボタンクリックを処理するため、これも

toolbar = (Toolbar) activity.findViewById(R.id.toolbar_overview); 
    activity.setSupportActionBar(toolbar); 
    activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

を:

この部分は、フラグメントのonActivityCreated方法でツールバーを設定するためのかなりの標準コードですby:
1)アプリケーションを開く
2)このフラグメントに移動する
3)ハードウェアのホームボタンを押す
4)Androidスタジオの赤いXボタン(アプリケーションの終了)を押す
5)エミュレータ画面のアプリアイコンを使用してエミュレータでアプリをもう一度開く。 (Androidスタジオからアプリを再起動しない)
6)ツールバーの戻るボタンを押します。 (結果なし、ログステートメントなし、何もありません)。

ご協力いただければ幸いです。

ありがとうございました。

答えて

0

まず第一に、あなたはのonCreate Menthodでこれをやっていることを確認してください。

toolbar = (Toolbar) activity.findViewById(R.id.toolbar_overview); 
activity.setSupportActionBar(toolbar); 
activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

は、アプリが再び開始されたときにアクションバーを更新するにはonResumeを使用してみてください。このコードを使用してください:

@Override 
protected void onResume() { 
    super.onResume(); 
    activity.setSupportActionBar(toolbar); 
    activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
} 

あなたのフラグメントののonCreate(バンドルsavedInstanceState)方法 onOptionsItemSelectedこれはあなたの活動に1

setHasOptionsMenu(true) 

オーバーライド(MenuItemのアイテム)を追加し、

を返すには

0

次にあなたが受け取るべきです断片を呼び出す

別のメソッドは、あなたのアクティビティにフラグメントオブジェクトを持っています。

ActivityのonOptionsItemSelected(MenuItemアイテム)が呼び出されると、フラグメントオブジェクトがnullでないかどうかを確認し、フラグメントオブジェクトのonOptionsItemSelected(MenuItemアイテム)をhelpというフラグメントオブジェクトで呼び出します。フラグメントオブジェクトがnullでない場合はtrueを返します。

@Override 
public boolean onOptionsItemSelected(MenuItem item){ 
    switch(item.getId()){ 
    case android.R.id.home: 
     if(myFragObj != null){ 
      myFragObj.onOptionsItemSelected(item); 
      return true 
     } 
    break; 
    } 
    return super.onOptionsItemSelected(item); 
} 
関連する問題