2016-11-19 37 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)

相关问题