2016-11-19 9 views
0

我有一個活動(MyActivity)與兩個片段(MyFirstFragmentMySecondFragment)。我希望屏幕對應的兩個片段顯示相同的確切工具欄:只有'主頁'按鈕('')和右上角的菜單,只有一個項目(我們稱之爲Foo)。不同的工具欄行爲在不同的片段中......怎麼樣?

它們之間的唯一區別應該是點擊Foo時的行爲。 (只是爲了舉一個例子,當我在MyFirstFragment和我按Foo我希望它顯示一個吐司,而當我在MySecondFragment我希望它打開一個AlertDialog)。

您認爲可能是這個的最佳實施方案? 我可以在MainActivity.java裏面定義工具欄,但是在每個片段java文件中設置兩個不同的行爲嗎?怎麼樣?

我會添加一些代碼,這裏是我如何定義我的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

沒錯,只是定義ToolbarMyActivity.java,然後在每一個片段構造函數中設置this標誌到true。然後用每個片段中的不同行爲覆蓋onOptionsItemSelected(MenuItem item)

相關問題