Java答案很好,我倾向于使用C#for Android。
在我的ActivityGroup中,我有这个方法,它启动并显示子活动:
public void StartChildActivity (string Id, Intent intent)
{
intent.AddFlags (ActivityFlags.ClearTop);
Window window = LocalActivityManager.StartActivity (Id, intent);
if (window != null)
{
mIdList.Add (Id);
SetContentView (window.DecorView);
}
}
然而,当我处理后退按钮以“弹出”视图并将其返回到上一个视图时,应用程序会在调用完成后关闭:
public override void OnBackPressed ()
{
int length = mIdList.Count;
if (length > 1)
{
Activity current = LocalActivityManager.GetActivity (mIdList [length - 1]);
current.Finish();
}
}
如何让视图“弹出”而不是关闭应用程序?
答案 0 :(得分:2)
尝试制作iOS端口听起来非常熟悉?
这就是我开始活动的方式
String id = "SOME_UNIQUE_ID";
Intent intent = new Intent(context,SomeClass.class);
intent.putExtra("UniqueID", id);
LocalActivityManager m = getLocalActivityManager();
Window w = m.startActivity(id, intent);
setContentView(w.getDecorView());
intentStack.push(intent);
这就是我在后面完成活动的方式
LocalActivityManager m = getLocalActivityManager();
Intent i = intentStack.pop();
m.destroyActivity(i.getStringExtra("UniqueID"),true);
intentStack就是我保留意图堆栈的地方,所以我可以再次找到这些活动。
这应该是您所需要的,但无论您是否应重新评估是否需要使用TabActivity / ActivityGroup作为该类,并且从2.2或2.3开始不推荐使用所有子类。您应该考虑转移到片段并使用支持库。