baseActivity从Navbar启动Activity / Dialog。对话框下有什么活动

时间:2014-01-31 15:08:37

标签: android

我犹豫要问这个问题,因为我没有要显示的代码块。问题更具概念性。

我有一个baseActivity来处理我的ActionBar。 baseActivity是在大多数活动中继承的,因此可以从任何地方访问我的ActionBar。该应用程序本身是一个购物应用程序,操作栏上的一个按钮设置为“查看购物车”,这是对话框主题中的一个活动,所以当用户按下按钮时,它看起来像是一个弹出窗口。 / p>

在购物车中,我想要有按钮,让用户可以快速访问目录中的新项目。按下按钮,启动目录并让用户购物。一切正常。

问题是,如果目录是调用对话框时的当前活动,我想简单地关闭对话框并返回目录 - 否则,我有一个目录实例正在运行并按下按钮导致另一个实例。

从操作栏调用对话框时,是否可以确定哪些活动处于活动状态?

2 个答案:

答案 0 :(得分:0)

您可能会发现可以处理您正在寻找的行为的意图Flags。例如,当您构建启动目录的意图时,添加:FLAG_ACTIVITY_REORDER_TO_FRONT - 如果它当前位于任务堆栈中并且还执行将现有活动带回用户停止的顶部的工作,则不会创建新活动如果用户离开它,但随后希望从购物车“返回”它。

这是解释一些意图标志的好链接:How do you use Intent.FLAG_ACTIVITY_CLEAR_TOP to clear the Activity Stack?

答案 1 :(得分:0)

我假设您的基本活动在onCreateOptionsMenu方法中夸大菜单xml(这是将操作项放在操作栏上的典型方法)。如果是这样,您可以在一个需要表现不同的活动中覆盖该行为,而不是显示按钮:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    menu.removeItem(R.id.action_show_catalog);
    // OR, if you want to be able to show it again in this activity, use
    // MenuItem catalogItem = menu.findItem(R.id.action_show_catalog);
    // item.setVisible(false);
}

值得一提的是:动作栏是一个窗户装饰。每个正在运行的Activity都有自己的操作栏。您的BaseActivity正在进行设置工作并不意味着它与您的应用程序中的ActionBar实例相同。