我在我的应用程序中使用 ActionBarSherlock,我的很多菜单项都可以在许多不同的活动中找到。
现在我必须在每个活动的activity_menu.xml
文件中定义它们,例如
显示在 5 个不同的 xml 文件中。有没有一种方法可以在一个 xml 文件中定义我的所有应用程序的菜单项,然后为每个活动选择我想要显示的菜单项?
编辑:我读到了关于创建一个只实现菜单功能然后扩展它的活动,但这对我来说不是一个空闲的解决方案。有什么方法可以做我描述的吗?
希望我清楚,谢谢
我在我的应用程序中使用 ActionBarSherlock,我的很多菜单项都可以在许多不同的活动中找到。
现在我必须在每个活动的activity_menu.xml
文件中定义它们,例如
显示在 5 个不同的 xml 文件中。有没有一种方法可以在一个 xml 文件中定义我的所有应用程序的菜单项,然后为每个活动选择我想要显示的菜单项?
编辑:我读到了关于创建一个只实现菜单功能然后扩展它的活动,但这对我来说不是一个空闲的解决方案。有什么方法可以做我描述的吗?
希望我清楚,谢谢
是的,有一种方法,您无需在每个活动中声明。您需要有一个名为 BaseActivity 的东西,以便可以扩展所有其他活动。代码示例:
BaseActivity.java:
public class BaseActivity extends SherlockFragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(Config.THEME);
// set up action bar
actionBar = getSupportActionBar();
// sets device orientation
setDeviceType(this);
actionBar.setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.aiwmain, menu);
return super.onCreateOptionsMenu(menu);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
switch (item.getItemId()) {
case R.id.scanner:
//do something on menu click
case R.id.location:
//do something on menu click
break;
}
return true;
}
现在只需通过 BaseActivity 扩展您的其他类:
public class HowToUseActivity extends BaseActivity {
}