3 回答

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超8個(gè)贊
你可以在onCreate()你的活動(dòng)中做到這一點(diǎn):
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
Menu navMenu = navigationView.getMenu();
navMenu.removeItem(R.id.action_acc_upgrade);
替換nav_view為您NavigationView的 id。

TA貢獻(xiàn)1809條經(jīng)驗(yàn) 獲得超8個(gè)贊
你應(yīng)該onPrepareOptionsMenu像這樣覆蓋:
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
if(isPaid()) {
menu.findItem(R.id.action_settings).setVisible(false);
}
}
注意: 確保在onPrepareOptionsMenu回調(diào)之前獲取正確的 isPaid() 值,例如 inonCreate()或onResume()。

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊
有幾種選擇:
最方便的選擇:在您的build.gradle文件中創(chuàng)建 2 種不同的 productFlavours
productFlavors {
free {
...
}
paid {
...
}
}
然后覆蓋沒(méi)有action_acc_upgrade項(xiàng)目的菜單文件以獲得付費(fèi)風(fēng)味。
如果您想以編程方式更改可見(jiàn)性,請(qǐng)嘗試使用onPrepareOptionsMenu代替onCreateOptionsMenu:
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
if(isPaid()) {
MenuItem upgrade = menu.findItem(R.id.action_acc_upgrade);
upgrade.setEnabled(false);
upgrade.setVisible(false);
}
}
如果您需要在創(chuàng)建后更改菜單,請(qǐng)調(diào)用invalidateOptionsMenu().
添加回答
舉報(bào)