Java 如何从一个活动中清除3个活动
我有3项活动(表1、表2、表3) 在用户填写表单3并发送之后,我想从活动(1&2&3)中删除信息,但在活动3中发送之后Java 如何从一个活动中清除3个活动,java,android,Java,Android,我有3项活动(表1、表2、表3) 在用户填写表单3并发送之后,我想从活动(1&2&3)中删除信息,但在活动3中发送之后 Intent temp_intent = new Intent(); temp_intent.setAction("form_filled"); sendBroadcast(temp_intent); Intent intent = new Intent(getApplicationContext(), activity2.class); class
Intent temp_intent = new Intent();
temp_intent.setAction("form_filled");
sendBroadcast(temp_intent);
Intent intent = new Intent(getApplicationContext(), activity2.class);
class_obj_class_name class_obj = new class_obj_class_name(); // FILL YOUR DATA IN CLASS OBJ
intent.putExtra("class_obj", class_obj); //class_obj IS YOUR CLASS OBJECT IN WHICH YOUR INFORMATION SAVED.
startActivity(intent);
// IN ACTIVITY 2 ONCREATE
class_obj = (class_obj_class_name)intent.getSerializableExtra("class_obj");
// SAME YOU CAN USE TO PASS DATA IN activity3
(我的意思是,如果用户在发送后单击“上一步”,我不希望他在表格1、2和3中找到他的信息
.Intent intent = new Intent(getApplicationContext(), Home.class);
intent.addFlags(FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
这是否允许我的1&2&3活动在活动3之后单击“上一步”时没有用户数据?
你能帮帮我吗?
============================编辑===============
有人告诉我这个,但我不明白,你能帮我怎么做吗
pass a reference to the previous forms in the last one and call clear on any element
谢谢大家请尝试以下代码以解决您的问题:
Intent homeScreen = new Intent(getApplicationContext(), Home.class);
homeScreen.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(homeScreen);
谢谢…!请尝试以下代码以解决您的问题:
Intent homeScreen = new Intent(getApplicationContext(), Home.class);
homeScreen.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(homeScreen);
谢谢…!您可以像这样使用Activity类的onActivityResult方法: 在活动1中,使用以下代码启动活动2:
Intent intent = new Intent(this, Activity2.class);
startActivityForResult(intent, 0);
在activity 1中,重写onActivityResult方法,如下所示:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0 && resultCode == 20) {
// Activity 2 is finish, so finish activity 1
finish();
}
}
在活动2中,执行以下操作:
Intent intent = new Intent(this, Activity3.class);
startActivityForResult(intent, 0);
因此:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0 && resultCode == 20) {
// Activity 3 is finish, so finish activity 2
setResult(20);
finish();
}
}
在活动3中,当用户提交表单时,请使用以下代码:
Intent intent = new Intent(this, Home.class);
startActivity(intent);
setResult(20);
finish();
PS:我建议您不要使用getApplicationContext(),而是使用“this”或“Activity1.this”
干杯,
Sebastien您可以像这样使用Activity类的onActivityResult方法: 在活动1中,使用以下代码启动活动2:
Intent intent = new Intent(this, Activity2.class);
startActivityForResult(intent, 0);
在activity 1中,重写onActivityResult方法,如下所示:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0 && resultCode == 20) {
// Activity 2 is finish, so finish activity 1
finish();
}
}
在活动2中,执行以下操作:
Intent intent = new Intent(this, Activity3.class);
startActivityForResult(intent, 0);
因此:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0 && resultCode == 20) {
// Activity 3 is finish, so finish activity 2
setResult(20);
finish();
}
}
在活动3中,当用户提交表单时,请使用以下代码:
Intent intent = new Intent(this, Home.class);
startActivity(intent);
setResult(20);
finish();
PS:我建议您不要使用getApplicationContext(),而是使用“this”或“Activity1.this”
干杯,
塞巴斯蒂安,试试这个
在上次发送活动中,如果要启动另一个活动或现有活动,请添加此活动
完成();
Intent Intent=newintent(getApplicationContext(),new-NewActivityOrExistingActivityName.class);
intent.addFlags(intent.FLAG\u ACTIVITY\u CLEAR\u TOP);
星触觉(意向)
这将清除上一个活动堆栈中的所有活动。请尝试此操作
There are two different ways to do that.
在上次发送活动中,如果要启动另一个活动或现有活动,请添加此活动
完成();
Intent Intent=newintent(getApplicationContext(),new-NewActivityOrExistingActivityName.class);
intent.addFlags(intent.FLAG\u ACTIVITY\u CLEAR\u TOP);
星触觉(意向)
这将清除上一个活动堆栈中的所有活动
There are two different ways to do that.
android:launchMode="singleTop"
from your activity 3 send broadcast to activity 1.
to finish all your activity which you have opened after 1 you can use your code.
Intent intent = new Intent(getApplicationContext(), Home.class);
intent.addFlags(FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
BroadcastReceiver form_filled = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String received_action = intent.getAction();
if (received_action.equals("form_filled")) {
Bundle bundle = intent.getExtras();
// GET ALL DATA FROM BUNDLE.
}
}
};
registerReceiver(form_filled, new IntentFilter("form_filled"));
//这是你在完成活动3之前必须做的事情
Intent temp_intent = new Intent();
temp_intent.setAction("form_filled");
sendBroadcast(temp_intent);
Intent intent = new Intent(getApplicationContext(), activity2.class);
class_obj_class_name class_obj = new class_obj_class_name(); // FILL YOUR DATA IN CLASS OBJ
intent.putExtra("class_obj", class_obj); //class_obj IS YOUR CLASS OBJECT IN WHICH YOUR INFORMATION SAVED.
startActivity(intent);
// IN ACTIVITY 2 ONCREATE
class_obj = (class_obj_class_name)intent.getSerializableExtra("class_obj");
// SAME YOU CAN USE TO PASS DATA IN activity3
希望它能奏效。。
抱歉格式化…:)
android:launchMode="singleTop"
from your activity 3 send broadcast to activity 1.
to finish all your activity which you have opened after 1 you can use your code.
Intent intent = new Intent(getApplicationContext(), Home.class);
intent.addFlags(FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
BroadcastReceiver form_filled = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String received_action = intent.getAction();
if (received_action.equals("form_filled")) {
Bundle bundle = intent.getExtras();
// GET ALL DATA FROM BUNDLE.
}
}
};
registerReceiver(form_filled, new IntentFilter("form_filled"));
//这是你在完成活动3之前必须做的事情
Intent temp_intent = new Intent();
temp_intent.setAction("form_filled");
sendBroadcast(temp_intent);
Intent intent = new Intent(getApplicationContext(), activity2.class);
class_obj_class_name class_obj = new class_obj_class_name(); // FILL YOUR DATA IN CLASS OBJ
intent.putExtra("class_obj", class_obj); //class_obj IS YOUR CLASS OBJECT IN WHICH YOUR INFORMATION SAVED.
startActivity(intent);
// IN ACTIVITY 2 ONCREATE
class_obj = (class_obj_class_name)intent.getSerializableExtra("class_obj");
// SAME YOU CAN USE TO PASS DATA IN activity3
希望它能奏效。。
抱歉格式化…:)
完成:)
谢谢大家,
完成:)
谢谢大家,不,该标志不会真正帮助您,您需要返回到1和2,还是可以从堆栈中清除它们?如果用户尚未在表单3中按send,则我不想清除1和2,但如果他在表单3中按send,则我的应用程序会将他移到我家,我想清除1和2和3,我该怎么做我的第二种方法好的,我明白。您可以使用静态标志来标识表单是否已发送。成功发送表单后,您可以更改标志值并根据标志值重置表单数据否该标志不会真正帮助您,是否需要返回1,2或者你能从堆栈中清除它们吗?如果用户在表单3中还没有按send,那么我不想清除1和2,但是如果他在表单3中按send,那么我的应用程序会将他移动到我家,我想清除1和2和3,我该如何做我的第二种方法?好的,我理解。您可以使用静态标志来标识表单是否已发送。成功发送表单后,您可以更改标志值并根据标志值重置表单数据。您可以告诉我,我应该从活动3发送到活动1的发送广播代码是什么,我如何在活动1中接收它,以及我应该将它放在哪里?我很抱歉打扰您,我的所有数据都来自act1和Act2,我在Act3中称之为act1和Act2,所以当您从1移动到2和从2移动到3时,我应该从Bundle中获取哪些数据