[英]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.