2017-10-16 55 views
0

我目前被困在當前處於從活動A調用的活動B中的情況中。所以我想要的是當活動B中出現某種情況時,將活動A從堆棧中移除以使其不會當用戶按下後退按鈕時出現。刪除所有活動不是一種選擇,因爲在A之前還有其他活動,我不想銷燬。我特別需要銷燬活動A。如何在android中破壞以前的活動?

+0

您可以在回調完成活動「活動A的onActivityResult「。 –

回答

0

當您開始活動B時,只需完成活動A.

是這樣的:

startActivty(intent); 
this.finish(); 

this是指當前活動(活動A)和intent具有意圖以打開活動B.

編輯:爲了除去ACTIV

然後在活動B
startActivityForResult(intent); // Starting Activity B. 

onBackPressed() { 
    setResult(...); // Set result as RESULT_OK etc based on condition. You can also send some data. 
} 

在活動一再說:只在一定條件下,兩者均一個

onActivityResult(...) { 
    if (...) // check the condition value from the result 
     finish(); 
} 
+0

我只需要在活動B中滿足某些條件時刪除活動A.否則,活動A需要在疊加。 – RamManiChimuriya

+0

哦,抱歉沒有看到這個問題。你可以簡單地攔截後按(onBackPressed),然後殺掉以前的活動。 將Activity B作爲startActivityForResult啓動,然後onBackPress將數據發送回可以在'onActivityResult'中攔截的Activity A - 在那裏您可以簡單地完成()活動A(如果需要)。 – kushpf

+0

@Ibrahim不,它只會清除活動A,因爲finish()僅用於此目的。 – kushpf

0

你可以,如果你不故意添加標誌也,不想讓你的活動保持備用,

Intent intent= new Intent(...); 
    intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
    startActivity(intent); 
0

在活動A

public class MainActivity extends AppCompatActivity { 
     public static Activity a; 
     protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main_activity); 
     a=this; 
    } 
...... 
} 

在活動B

public class SecondActivity extends AppCompatActivity { 
     protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.second_activity); 

     //Finish Activity here, like on button click 
    btn= (Button) view.findViewById(R.id.close); 
    btn.setOnClickListener(new View.OnClickListener() {  
    @Override 
     public void onClick(View v) { 
     MainActivity.a.finish();   //To finish MainActivity 
    } 
}); 


    } 

} 
0

時啓動活動B從活動一剛使用結束()

Intent intent=new Intent(A.this,B.class); startActivty(intent); this.finish();