0

Java 回答很好,我倾向于将 C# 用于 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();
        }           
    }

如何让视图“弹出”而不是关闭应用程序?

4

1 回答 1

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 起已被弃用。您应该考虑移动到片段并使用支持库。

于 2012-05-09T05:25:12.827 回答