3 回答
TA贡献1772条经验 获得超8个赞
你可以在onCreate()你的活动中做到这一点:
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
Menu navMenu = navigationView.getMenu();
navMenu.removeItem(R.id.action_acc_upgrade);
替换nav_view为您NavigationView的 id。
TA贡献1809条经验 获得超8个赞
你应该onPrepareOptionsMenu像这样覆盖:
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
if(isPaid()) {
menu.findItem(R.id.action_settings).setVisible(false);
}
}
注意: 确保在onPrepareOptionsMenu回调之前获取正确的 isPaid() 值,例如 inonCreate()或onResume()。
TA贡献1851条经验 获得超4个赞
有几种选择:
最方便的选择:在您的build.gradle文件中创建 2 种不同的 productFlavours
productFlavors {
free {
...
}
paid {
...
}
}
然后覆盖没有action_acc_upgrade项目的菜单文件以获得付费风味。
如果您想以编程方式更改可见性,请尝试使用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);
}
}
如果您需要在创建后更改菜单,请调用invalidateOptionsMenu().
添加回答
举报