2016-11-19 5 views
0

私は2つの断片(MyFirstFragmentおよびMySecondFragment)を有する活性(MyActivity)を有する。私は2つのフラグメントに対応するスクリーンをに同じ正確なツールバーを表示するようにしたい:ただ1つの項目(それをFooと呼ぶ)で 'ホーム'ボタン( '')と右上のメニュー。異なる断片の異なるツールバーの動作...どのように?

唯一の違いは、Fooをクリックしたときの動作です。 (私がMyFirstFragmentにいて、私がFooを押すと、トーストを表示したいときに、私はMySecondFragmentのAlertDialogを開きたいと思っています。

このには、ベスト・インプリメンテーションがありますか? MainActivity.javaの中にツールバーを定義することはできますが、各フラグメントのJavaファイルには2つの異なる動作を設定できますか?どうやって?

私はいくつかのコードを追加します、ここで私はしばらくの間、私のMyActivity.java内部のツールバーを定義しています方法は次のとおりです。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // [...] 
    Toolbar tb = (Toolbar) findViewById(R.id.toolbar_my); 
    setSupportActionBar(tb); 
    if (getSupportActionBar() != null) 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    tb.setNavigationOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      onBackPressed(); //goes to the previous fragment 
     } 
    }); 
    // [...] 
} 


@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch(item.getItemId()) { 
     case R.id.foo: 
     // do something 
     return true; 
    default: 
     return false; 
    } 
} 

答えて

2

うん、ちょうどMyActivity.javaの内側にあなたのToolbarを定義し、各フラグメントのコンストラクタでthisフラグを設定〜true。次に、各フラグメントで異なる動作を持つonOptionsItemSelected(MenuItem item)をオーバーライドします。

関連する問題