1

我正在为http://ericharlow.blogspot.com/2010/09/experience-multiple-android-activities.html中描述的TabActivity活动实施解决方案。我意识到这是次优的,但我已经在这条路上走了很远,只剩下一个小问题。我需要弹出到我正在管理的堆栈顶部(使用活动 ID 列表),并且我知道我可以使用以下方法获取此活动:TabHostString

Activity current = getLocalActivityManager().getActivity(mIdList.get(0));

但是,我不知道“显示”的方法current

我知道我可以这样做:

Activity current = getLocalActivityManager().getActivity(mIdList.get(1))
current.finish();

如果堆栈上至少有两个活动,这将产生预期的结果。但是,当只有一个时,它会因ArrayOutOfBoundsException.

我如何“显示”给定的活动?

4

1 回答 1

1

尝试以这种方式启动一个始终位于 Activity Stack 顶部的 Activity:

List<ActivityManager.RunningTaskInfo> processes1 = activityManager.getRunningTasks(1);
ComponentName componentInfo = processes1.get(0).topActivity;
String classname =processes1.get(0).topActivity.getClassName(); 
String packagename = processes1.get(0).topActivity.getPackageName();
if(classname.equalsIgnoreCase("com.YOUR_PACKAGE_NAME..YOURACTIVITY_NAME"))
    {
        Intent intent24 = new Intent(Intent.ACTION_MAIN).addCategory(
        Intent.CATEGORY_LAUNCHER).setClassName("YOUR_PACKAGE_NAME",
        "com.YOUR_PACKAGE_NAME..YOURACTIVITY_NAME").addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
        .addFlags(Intent.FLAG_FROM_BACKGROUND).setComponent(new ComponentName("YOUR_PACKAGE_NAME",
        "com.YOUR_PACKAGE_NAME..YOURACTIVITY_NAME"));
        getApplicationContext().startActivity(intent24);
    }
    else
    {
     //DONE SOMETHING HERE...
    }
于 2012-05-23T15:57:20.980 回答