我怎样才能从一项活动中清除3项活动

时间:2012-05-07 07:56:39

标签: java android

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

这让我的1& 2& 3活动3后点击后没有用户数据的活动? 你能帮我么? ===================编辑===============

有人告诉我这个,但我没有得到它,你能帮我解决怎么办

pass a reference to the previous forms in the last one and call clear on any element

谢谢大家

5 个答案:

答案 0 :(得分:1)

请尝试以下代码来解决您的问题:

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

谢谢...!

答案 1 :(得分:1)

您可以使用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”

干杯, 的Sebastien

答案 2 :(得分:1)

试试这个..

在上次发送活动中,如果您要启动其他活动或现有活动,请添加此

  

结束();   Intent intent = new Intent(getApplicationContext(),new NewActivityOrExistingActivityName.class);   intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);   startActivity(意向);

将清除之前活动堆栈中的所有活动

答案 3 :(得分:1)

There are two different ways to do that.
  1. 您可以在完成活动后设置结果。这将像链一样工作。例如            1→2→3     假设你在活动3中有完成按钮将结果发送到acitivity 1,那么你可以在完成按钮点击事件中从活动3中设置Retult()并通过调用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);
    
  3. //在开始您的第一次活动之前,您只需要写一下这个活动我在开始活动之前一直认为是这样的。

    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
    

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

答案 4 :(得分:0)

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

完成:) 谢谢大家,