我有一个应用程序,有三种不同的版本:
每个版本都有不同的包名,因此我可以将它们作为不同的应用程序发布。
现在我只希望
我尝试了使用菜单资源来实现以下操作:
很明显这是为什么。但是你有没有建议如何解决为不同的构建风格自定义菜单的问题?
full
,part1
和part2
。每个版本都有不同的包名,因此我可以将它们作为不同的应用程序发布。
现在我只希望
part1
版本有一个名为Reload
的菜单项,其他两个版本不应该有这个菜单项。这可能吗?我尝试了使用菜单资源来实现以下操作:
app
|
+-src
|
+-full
|
+-main
| |
| +-res
| |
| +-menu
| |
| +-main_activity.xml
|
+-part1
| |
| +-res
| |
| +-menu
| |
| +-main_activity.xml
|
+-part2
part1
的 main_activity.xml
位于:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_reload"
android:icon="@drawable/ic_reload"
android:title="@string/action_reload"
app:showAsAction="always"/>
</menu>
而 main_activity.xml
中的 main
如下:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
</menu>
然而,如果我在除part1
之外的任何其他构建变体中构建应用程序,则在需要对菜单选择做出反应的MainActivity
中会出现编译错误:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_reload: // Compile error: This item is not available
// TODO reload
return true;
default:
return super.onOptionsItemSelected(item);
}
}
很明显这是为什么。但是你有没有建议如何解决为不同的构建风格自定义菜单的问题?
onOptionsItemSelected
。 - Blackbelt