Android 控制选项菜单可用性
我有一个活动(act2),可以从act1或act3启动。如果它是从act1启动的,我希望我的选项菜单可用,这意味着当你按下菜单按钮时,它会显示出来。如果它是从act3启动的,我没有什么需要在选项菜单中,所以我希望它不会出现在您按下菜单。我该怎么做呢?如果从act1调用act2,则通过bundle传递一个布尔变量作为Android 控制选项菜单可用性,android,android-intent,android-menu,Android,Android Intent,Android Menu,我有一个活动(act2),可以从act1或act3启动。如果它是从act1启动的,我希望我的选项菜单可用,这意味着当你按下菜单按钮时,它会显示出来。如果它是从act3启动的,我没有什么需要在选项菜单中,所以我希望它不会出现在您按下菜单。我该怎么做呢?如果从act1调用act2,则通过bundle传递一个布尔变量作为true。如果您正在从act3调用act2,请将其作为false传递,或者根本不传递它 在act2中,特别是在onCreate()方法中,捕获该布尔变量。您必须小心,如果您没有从act
true
。如果您正在从act3调用act2,请将其作为false
传递,或者根本不传递它
在act2中,特别是在onCreate()
方法中,捕获该布尔变量。您必须小心,如果您没有从act3传递包,那么在执行此操作时,它将在act2中抛出null指针异常。现在您可以得到一个布尔变量,它可以帮助act2确定它的来源。[如果它是真的,那么它来自act1或act2]
现在在活动中重写onCreateOptionsMenu()
方法,它将返回布尔值。因此,如果您通过true
,当您按下菜单按钮时,菜单项将弹出,或者如果您返回false
,则不会弹出菜单项。使用您从onCreate()方法获取的布尔变量,您可以简单地返回它,这样当它的true
[从act1]菜单将显示时,或者如果false
[从act3]它将根本不显示。如果您从act1调用act2,则将布尔变量作为true
传递到bundle。如果您正在从act3调用act2,请将其作为false
传递,或者根本不传递它
在act2中,特别是在onCreate()
方法中,捕获该布尔变量。您必须小心,如果您没有从act3传递包,那么在执行此操作时,它将在act2中抛出null指针异常。现在您可以得到一个布尔变量,它可以帮助act2确定它的来源。[如果它是真的,那么它来自act1或act2]
现在在活动中重写onCreateOptionsMenu()
方法,它将返回布尔值。因此,如果您通过true
,当您按下菜单按钮时,菜单项将弹出,或者如果您返回false
,则不会弹出菜单项。使用从onCreate()方法获取的布尔变量,您只需在显示其true
[从act1]菜单时返回它,或者在false
[从act3]的情况下根本不显示它。使用意图,这是可能的。例如:
在act1中,在启动act2的同时
Intent intent = new Intent(this, Act2.class);
intent.putExtra("showmenu", true);
startActivity(intent);
在act3中,您可以将其设置为false,也可以不执行任何操作
在act2中,检查并显示
if (intent.getBooleanExtra("showmenu", false))
//show option menu
使用意图,这是可能的。例如:
在act1中,在启动act2的同时
Intent intent = new Intent(this, Act2.class);
intent.putExtra("showmenu", true);
startActivity(intent);
在act3中,您可以将其设置为false,也可以不执行任何操作
在act2中,检查并显示
if (intent.getBooleanExtra("showmenu", false))
//show option menu
如果从act1启动:
Intent io = new Intent(act1.this, act2.class);
io.putExtra("enableOptionMenu", 1);
startActivity(io);
如果从act3启动:
Intent io = new Intent(act3.this, act2.class);
io.putExtra("enableOptionMenu", 0);
startActivity(io);
在act2中,您将在onCreate中阅读“enableOptionMenu”:
int enableOptionMenu;
Intent i = getIntent();
enableOptionMenu = i.getIntExtra("enableOptionMenu", 0);
最后检查OnCreateOptions菜单中的EnableOptions菜单:
public boolean onCreateOptionsMenu(Menu menu) {
if (enableOptionMenu == 1) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_act2, menu);
}
return true;
}
如果从act1启动:
Intent io = new Intent(act1.this, act2.class);
io.putExtra("enableOptionMenu", 1);
startActivity(io);
如果从act3启动:
Intent io = new Intent(act3.this, act2.class);
io.putExtra("enableOptionMenu", 0);
startActivity(io);
在act2中,您将在onCreate中阅读“enableOptionMenu”:
int enableOptionMenu;
Intent i = getIntent();
enableOptionMenu = i.getIntExtra("enableOptionMenu", 0);
最后检查OnCreateOptions菜单中的EnableOptions菜单:
public boolean onCreateOptionsMenu(Menu menu) {
if (enableOptionMenu == 1) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_act2, menu);
}
return true;
}