我正在处理我的第一个Android应用程序,并且我遇到了一个无法排序的问题。我检查了堆栈溢出,但我找不到解决方案。如何检查上下文当前正在运行的活动
当菜单项被选中时,我有一个菜单显示4种不同的活动。 我也有管理菜单类:
public class TabMenuManager {
final Context context;
public TabMenuManager(Context context) {
this.context = context;
}
public boolean handleTabMenuAction(int item) {
Log.d("Toolstrea", "TAB MENU HANDLED: " + item);
switch (item) {
case R.id.action_home:
handleHomeAction();
return true;
case R.id.action_reorder:
handleReOrderAction();
return true;
//.....
}
private void handleReOrderAction() {
if (this.context.getApplicationContext() instanceof ReOrderActivity) {
Log.d("Toolstream", "REORDER CLASSES THE SAME");
Intent reOrderIntent = new Intent(this.context, ReOrderActivity.class);
reOrderIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
this.context.startActivity(reOrderIntent);
}
else
Log.d("Toolstream", "REORDER CLASSES NOT THE SAME");
}
private void handleHomeAction() {
// Simmilar as one above
}
}
在我显示菜单中的所有活动,我只要致电:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle presses on the action bar items
TabMenuManager tmm = new TabMenuManager(getApplicationContext());
boolean success = tmm.handleTabMenuAction(item.getItemId());
if (!success) {
return super.onOptionsItemSelected(item);
}
return success;
}
该类只是简单的展示活动,但我想,以确保它获得与目前的活动不一样。 在这个例子中我使用:
this.context.getApplicationContext() instance of ReOrderActivity
但我也试过
this.context.getClass() == HomeActivity.class
它随时登录该活动是不同的。 它导致的问题是,如果我在HomeActivity中,我可以在我的菜单中按主页,另一个HomeActivity实例将被添加到堆栈等。
我该如何确保只展示活动的一个实例? 有没有更好的方式我这样做?
非常感谢。
应用程序上下文始终是应用程序的立场。 –