我创建了一个具有菜单的基本活动,此菜单将打开应用程序中的其他活动。
public class BaseActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//Intent i = new Intent("com.app.Activity1");
//startActivity(i);
}
@Override
public boolean onCreateOptionsMenu(Menu menu){
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.icon: Intent i1 = new Intent("com.app.Activity1");
startActivity(i1);
break;
case R.id.text: Intent i2 = new Intent("com.app.Activity2");
startActivity(i2);
break;
case R.id.icontext: Intent i3 = new Intent("com.app.Activity3");
startActivity(i2);
break;
}
return true;
}
}
所有活动都扩展了此基本活动,因此当您按下菜单按钮时,菜单将弹出,您可以选择一个活动。
但是,假设我使用菜单转到活动A。一旦进入活动A,我可以再次使用菜单转到活动A。我可以这样做X次,但现在后退按钮将返回相同的活动X次。
如何判断活动是否已在运行,以便用户无法继续打开同一活动?
或者,您建议我在活动a中禁用菜单项一次吗?
谢谢你的意见。抱歉,如果这看起来像一个小问题。
最佳答案
有一个简单的解决办法。您想禁用onPrepareOptionsMenu()
中当前活动的菜单项,如下所示:
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// Determine what activity I am and find the menu item for that activity
MenuItem menuItem = null;
if (getClass().equals(com.app.Activity1.class)) {
menuItem = menu.findItem(R.id.icon);
} else if (getClass().equals(com.app.Activity2.class)) {
menuItem = menu.findItem(R.id.text);
} else if (getClass().equals(com.app.Activity3.class)) {
menuItem = menu.findItem(R.id.icontext);
}
// Disable this menu item
if (menuItem != null) {
menuItem.setEnabled(false); // Make it non-selectable (even with shortcut)
menuItem.setVisible(false); // Make it non-visible
}
return true;
}