繁体   English   中英

如何销毁“活动”中的先前活动?

[英]How to destroy previous activity in Activity?

我有四个活动,即A,B,C和D。A启动B,B启动C,C启动D。当C启动D时,我想根据情况销毁活动B(逻辑将保留在其中活动C),这样当我从D返回时,它将遵循D-> C-> A路径。 所以我想从C销毁活动B。这怎么可能?

调用活动C时完成活动B取决于您的逻辑。 例如

if(true){
Intent in = new Intent(B.this,c.class);
startActivity(c);
}
else
{
Intent in = new Intent(B.this,c.class);
startActivity(c);
finish();
}

finishActivity(requestCode);

此方法可能会帮助您。

要做的是用来自B的一些请求代码启动活动C,然后用此请求代码完成活动。

只需调用finish(); 从活动C返回活动B的 onActivityResult时,具体取决于您想要的逻辑

我认为您可以做的是,您可以在每堂课中注册一个广播,并且只要您想结束sendbroadcast和完成该活动即可。

        // REGISTER IN ONCREATE
        BroadcastReceiver form_filled = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                String received_action = intent.getAction();

                if (received_action.equals("finish_a")) {
                    finish();
                }
            }
        };
        registerReceiver(form_filled, new IntentFilter("finish_a"));

        // THIS YOU HAVE TO DO WHEN YOU WANT TO FINISH
        Intent temp_intent = new Intent();
        temp_intent.setAction("finish_a");
        sendBroadcast(temp_intent);

好的,您可以调用startActivityForResult(in,5); 启动活动C,并在活动B中实现覆盖方法,例如

 @Override 
   protected void onActivityResult(int requestCode, int resultCode, Intent intent)       {                
super.onActivityResult(requestCode, resultCode, intent); 
    if(resultCode==0)
    { 
      finish(); 
    }
    else
   {

    } 
    }

并在调用Activity D时在Activity中设置结果代码,例如

Intent backintent = getIntent(); 
  setResult(0); 
  Intent in = new Intent(C.this,D.class); 
  startActivity(in);

而已....

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM