【问题标题】:How to finish parent activity from child activity如何从子活动完成父活动
【发布时间】:2012-03-28 16:15:59
【问题描述】:

我是 Android 开发新手。

我创建了一个主 Activity (->A),它有 4 个按钮。 4 个按钮之一是 EXIT 按钮。

我开始另一个活动 (->B),点击 EXIT 按钮。这将通过来自“A”Activity 的意图打开“B”Activity。

活动“B”包含 - 您要退出吗?是按钮和否按钮。

如果我给出finish(),点击按钮- 它退出'B'Activity。我想完成“B”和“A”。

我什至尝试过 A.finish() -> 这无法被识别并导致语法/语义错误。

我会很感激这里的帮助。

P.S : 我使用的是Android-2.2 版本的手机,我不喜欢使用ActivityManager 来解决这个问题。

【问题讨论】:

    标签: android android-intent android-activity android-2.2-froyo android-ui


    【解决方案1】:

    尝试使用

    启动子活动
     startActivityForResult(intent, REQUEST_EXIT);
    

    在子活动中

    case R.id.quit:
         setResult(RESULT_OK, null);
         finish();
    

    在父活动中

     @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    
        if (requestCode == REQUEST_EXIT) {
             if (resultCode == RESULT_OK) {
                this.finish();
    
             }
         }
    }
    

    【讨论】:

    • 如果父活动没有出现,这是否有效。我的意思是我有一个按钮可以开始另一个活动。在此按钮上单击我也不会完成当前活动及其父项
    • 只要子Activity是在父Activity中使用startActivityForResult启动的,并且onActivityResult是在父Activity中定义的,这个方法就会起作用。
    【解决方案2】:

    Activity A 中使用 startActivityForResult() 来启动 Activity B,在 A 中使用 onActivityResult() 只是在 finish() Activity A 中。在 Activity B 中按下按钮只是 finish() Activity B。

    【讨论】:

    • 感谢 Georgy 的解释 - 我已将他的代码部分用于我的代码部分。
    【解决方案3】:

    您可以从子活动中完成父活动,例如...

    在父母中....

     startActivityForResult(new Intent(Parent.this, Child.class), ACTIVITY_CONSTANT);
    

    并覆盖 Parent 中的 OnActivityForResult(...) 方法。

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode == ACTIVITY_CONSTANT)
        {
            finish();
        }
    }
    

    当您在子活动上调用 finish() 时,它也会结束父活动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-04
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 2013-03-17
      相关资源
      最近更新 更多