我正在实施TabActivity
的解决方案,其活动位于TabHost
,如http://ericharlow.blogspot.com/2010/09/experience-multiple-android-activities.html所述。我意识到这是次优的,但我已经走了这条路很远,只有一个剩余的打嗝。我需要弹出我正在管理的堆栈顶部(使用活动ID的String
列表)并且我知道我可以使用以下方式获取此活动:
Activity current = getLocalActivityManager().getActivity(mIdList.get(0));
但是,我不知道“显示”current
的方法。
我知道我可以这样做:
Activity current = getLocalActivityManager().getActivity(mIdList.get(1))
current.finish();
如果堆栈上至少有两个活动,这将产生预期的结果。但是,当只有一个时,它会因ArrayOutOfBoundsException
而失败。
如何“显示”特定活动?
答案 0 :(得分:1)
尝试这种方式来启动活动堆栈中始终位于顶部的活动:
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...
}