【问题标题】:How to close 2 activities with single action如何通过单个操作关闭 2 个活动
【发布时间】:2021-10-27 02:06:41
【问题描述】:

有 3 个活动 A、B、C。

A -> B -> C 带按钮

A

A -> B

   @Override
   public void onClick(View v) {
       Intent intent = new Intent(A.this, B.class);
       startActivity(intent);
   }

B -> C

   @Override
   public void onClick(View v) {
       Intent intent = new Intent(B.this, C.class);
       startActivity(intent);
   }

B -> A

   @Override
   public void onClick(View v) {
       finish();
   }

C -> B

   @Override
   public void onClick(View v) {
       finish();
   }

如何使用关闭C和B的按钮从C返回A?

【问题讨论】:

  • 检查stackoverflow.com/questions/32198055/…。对于这种情况,您也可以使用 startActivityForResult ,只需将结果从 Activity C 发送回 Activity B ,它将关闭,现在您将处于 On Activity A 。你也可以使用Intent.FLAG_ACTIVITY_CLEAR_TOPLike This
  • 曾经考虑过使用片段而不是活动?
  • Intent.FLAG_ACTIVITY_CLEAR_TOP 没用

标签: java android android-intent android-activity activity-finish


【解决方案1】:

只需使用 finish() 即可。

B -> C

@Override
public void onClick(View v) {

    Intent intent = new Intent(B.this, C.class);

    startActivity(intent);
    
    finish(); //Solution
}

注意:您也可以使用launch modes

【讨论】:

    【解决方案2】:

    对 A -> B 和 B -> C 使用 startActivityForResult 然后在 C 中覆盖下面的方法

    override fun onBackPressed() {
        setResult(RESULT_OK)
        super.onBackPressed()
    }

    现在在 B 覆盖下面的方法

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
            super.onActivityResult(requestCode, resultCode, data)
            if (resultCode == Activity.RESULT_CANCELED) return
    
            when (requestCode) {
                YoutIntentCodeWhenYouGoToC -> {
                    setResult(RESULT_OK)
                    onBackPressed()
                }
            }
        }

    现在您在 A 中。如果您按下后退按钮,则不会显示 B 或 C 屏幕。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-15
      • 2012-08-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多