full
と の 3 つの異なるフレーバーを持つアプリがpart1
ありpart2
ます。
フレーバーごとにパッケージ名が異なるため、異なるアプリとして出荷できます。
part1
というメニュー項目だけを取得したいのですReload
。他の 2 つのフレーバーには、このメニュー項目はありません。これは可能ですか?
メニューリソースで次のことを試しました:
app
|
+-src
|
+-full
|
+-main
| |
| +-res
| |
| +-menu
| |
| +-main_activity.xml
|
+-part1
| |
| +-res
| |
| +-menu
| |
| +-main_activity.xml
|
+-part2
forは次のとおりmain_activity.xml
です。part1
<?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);
}
}
その理由は明らかです。しかし、さまざまなビルド フレーバーに合わせてメニューをカスタマイズするための解決策について何か提案はありますか?