在我的应用程序根活动中,我有一个自定义标签栏,包含三个标签,可在使用ViewFlipper实现的三个屏幕之间切换。
我现在要做的是给每个屏幕它自己的活动堆栈,制作 标签栏可用于我的所有活动,并在按下标签时在不同的堆栈之间切换。
就像蜂窝上的魅力一样,我在ActivityMaganger类中提供了bringTaskToFront()。
我尝试了很多解决方案,例如:
那么,任何想法?
非常感谢,
斯文
答案 0 :(得分:1)
在honey和up版本中,您可以像这样使用MoveTaskToFront
//Bring Task to front with Android >= Honeycomb
if (Build.VERSION.SDK_INT >= 11) {
ActivityManager am = (ActivityManager) getSystemService(Activity.ACTIVITY_SERVICE);
List<RunningTaskInfo> rt = am.getRunningTasks(Integer.MAX_VALUE);
for (int i = 0; i < rt.size(); i++)
{
// bring to front
if (rt.get(i).baseActivity.toShortString().indexOf("yourproject") > -1) {
am.moveTaskToFront(rt.get(i).id, ActivityManager.MOVE_TASK_WITH_HOME);
}
}
}
确保您的Project Compiles with Android v.11或更高版本,以确保此行不会因编译而中断:
am.moveTaskToFront(rt.get(i).id, ActivityManager.MOVE_TASK_WITH_HOME);
对于较旧的Android版本,您可以使用以下方法将任务移到前面:
Intent intent = new Intent(this, YourClass.class);//The class you want to show
startActivity(intent);
在android清单中添加以下内容
<!--The versions with which to compile-->
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="11"/>
<!--The Activity you wish to bring forward-->
<activity android:name="YourClass" android:taskAffinity="" android:launchMode="singleTask" />
<!--User Permissions-->
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.REORDER_TASKS" />
最后,确保当您通过覆盖onBackPressed()
,不要使用 moveTaskToBack()
将任务推回时,这将导致您的任务无法完成对用户可见。而是使用以下内容:这将模拟主页按钮按下,这将有效地隐藏您的应用程序并显示主屏幕
@Override
public void onBackPressed() {
Utils.showToast(this, "Your application is running in the background");
/*Simulate Home Button Press*/
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
}
你去了,我希望这对你有用,并帮助一些人解决这个问题。
答案 1 :(得分:0)
这适用于我在Honeycomb上下的Android版本。键是intent flags
onItemClickedListener