繁体   English   中英

我如何才能从一项活动中清除3项活动

[英]how can i clear the 3 activities from one activity

我有3个活动(表格1,2,3),在用户填写表格3并将其发送后,我想从活动(1&2&3)中删除信息,但在活动3中发送之后

(我的意思是,如果用户在发送之后点击了我,我不想让他在表格1&2&3中找到他的信息

.Intent intent = new Intent(getApplicationContext(), Home.class);
 intent.addFlags(FLAG_ACTIVITY_CLEAR_TOP);
 startActivity(intent);

当我在活动3之后单击时,是否让我的1&2&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);

谢谢...!

您可以像这样使用Activity类的onActivityResult方法:

在活动1中,使用以下代码启动活动2:

Intent intent = new Intent(this, Activity2.class);
startActivityForResult(intent, 0);

在活动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 = new Intent(getApplicationContext(),new NewActivityOrExistingActivityName.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(意向);

这将清除您先前活动堆栈中的所有活动

There are two different ways to do that.
  1. 您可以在完成活动后设置结果。 这将像链条一样工作。 例如1-> 2-> 3假设您在活动3中具有完成按钮以将结果发送到活动1,那么您可以在完成按钮click事件中从活动3设置setResult()并通过调用finish()完成活动。 在活动2中,您可以在onActivityResult()中接收数据,在那里您可以检查结果代码并保存数据,就像您也可以从活动2到活动1一样发送结果。

    的setResult(); onActivityResult();

  2. 对于第二种方法,首先必须在清单文件中为活动1设置单个顶部,在其中保存来自3的所有数据时您将最终返回该顶部。

      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); 

//在开始进行第一个表格活动之前,您需要先写一下。在这种情况下,我想在开始活动之前就进行写1。

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

希望它能工作..抱歉格式化... :)

.Intent intent = new Intent(getApplicationContext(), Home.class);
 intent.addFlags(FLAG_ACTIVITY_CLEAR_TOP);
 startActivity(intent)

完成:)谢谢大家,

暂无
暂无

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

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