【问题标题】:Activity that calls finish after being started from onContextItemSelected ends initial activity?从 onContextItemSelected 启动后调用完成的活动结束初始活动?
【发布时间】:2011-11-02 16:42:45
【问题描述】:

Activity_A 调用 Activity_B (startActivity() 并且当 _B 调用 finish(); 两个活动都关闭。我正在添加 FLAG_ACTIVITY_NEW_TASK,我尝试使用 startActivityForResult 没有任何运气。

Activity_A 是一个 TabActivity Activity_B 是一个 Activity

正在从 Activity_A 调用 Activity_B,例如:

            public boolean onContextItemSelected(MenuItem item) {
              // code removed...
              Intent mViewIntent = new Intent(Activity_A.this, Activity_B.class);
              mViewIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
              mViewIntent.putExtra("ID", MY_IDS.get(position));
              this.startActivity(mViewIntent);
              // code removed...
            }

我知道,当我从 onItemClick() 中调用相同的例程时,一切都按我的预期工作,将为 Activity_B 启动一个新活动,如果调用了 finish() 或用户按下回,程序将返回到 Activity_A。似乎在 onContextItemSelected() 中,new_task 的标志被忽略了,或者我不理解的其他错误。请帮我解决这个问题!

【问题讨论】:

    标签: android contextmenu


    【解决方案1】:

    就我对您的问题的理解而言,我不明白您为什么应该使用mViewIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    请参阅documentation for FLAG_ACTIVITY_NEW_TASK

    【讨论】:

    • Activity_B 是一个用于编辑在 Activity_A 上选择的项目的活动,我尝试不使用此代码并单击 Activity_B 上的保存仍然会导致 _A 关闭。当我从 onItemClick 和 onContextItemSelected 调用相同的代码时,它工作得很好。
    • 也许onContextItemSelected 方法中的一些其他代码会导致 ActivityA 退出。因此,看起来 ActivityB 的 finish() 导致 ActivityA 完成。
    • 完全正确!不知何故,在将活动合并到 TabActivity 时,我错过了一个很长的代码块底部的完成()。最初我开始 _B 并在 _B 完成后调用另一个活动而不是返回。我今天在_A中忽略了3个小时的完成。那你指点我再回头看看!我觉得我忽略了一些如此简单的事情!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多