私は3種類のフレーバー、full
,part1
およびpart2
を持つアプリを持っています。Flavorのメニュー項目を非表示にする方法
すべてのフレーバーはパッケージ名が異なるため、別のアプリとして出荷することができます。
part1
は、Reload
というメニュー項目を取得します。他の2つのフレーバーにはこのメニュー項目がありません。これは可能ですか?
私は、メニューリソースと次のことを試してみました:part1
ためmain_activity.xml
がある
app
|
+-src
|
+-full
|
+-main
| |
| +-res
| |
| +-menu
| |
| +-main_activity.xml
|
+-part1
| |
| +-res
| |
| +-menu
| |
| +-main_activity.xml
|
+-part2
: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">
<item
android:id="@+id/action_reload"
android:icon="@drawable/ic_reload"
android:title="@string/action_reload"
app:showAsAction="always"/>
</menu>
そして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">
</menu>
、I場合アポを作るpart1
以外のビルドバリアントのp、私はメニュー選択に反応する必要が私の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'の別のバージョンを提供する、フレーバー毎に共通のコードと異なるMainActivityとBaseActivityを持っています – Blackbelt