在使用我的应用程序时,我不得不遇到一种情况,我应该使用菜单,当用户单击菜单按钮时,该菜单必须在整个应用程序中显示。
所以我在默认活动中使用了以下代码,但后来意识到该菜单正在该活动中显示,但并非全部显示。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.del_boy_menu, menu);
//below comented code for changung dynamically
// MenuItem bedMenuItem = menu.findItem(R.id.home);
// bedMenuItem.setTitle("title changed");
// System.out.println("onCreate executed");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
System.out.println("onOptionSelected executed");
switch (item.getItemId()) {
case R.id.home:
// Single menu item is selected do something
// Ex: launching new activity/screen or show alert message
Toast.makeText(MainDeliveryBoyActivity.this, "Home is Selected", Toast.LENGTH_SHORT).show();
// MenuHomeActivity
startActivity(new Intent(context,MenuHomeActivity.class));
return true;
case R.id.delivered1:
Toast.makeText(MainDeliveryBoyActivity.this, "delivered is Selected", Toast.LENGTH_SHORT).show();
return true;
case R.id.cancelled:
Toast.makeText(MainDeliveryBoyActivity.this, "cancelled is Selected", Toast.LENGTH_SHORT).show();
return true;
case R.id.active:
Toast.makeText(MainDeliveryBoyActivity.this, "active is Selected", Toast.LENGTH_SHORT).show();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
所以我的问题是我应该在所有活动中复制并粘贴上述所有代码吗?还是有办法让我跳过这个?
答案 0 :(得分:2)
创建一个名为BaseActivity
的全局活动,并使所有活动扩展它。
public class BaseActivity extends AppCompatActivity{
public void onCreate(Bundle iCreate){
...
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.del_boy_menu, menu);
....
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
....
}
}
现在所有其他活动都应该扩展BaseActivity,因此您不必每次都编写代码来扩充菜单。
public class Activity1 extends BaseActivity{
....
}
答案 1 :(得分:1)
我相信每个活动都有一个独特的菜单。但是有一种方法可以做你想在这里实现的东西。
您还可以参考此答案,Reuse the Action Bar in all the activities of app和this article。
PS:我不赞成答案,我只是想帮忙。干杯!