我目前处于我目前处于从活动A调用的活动B的情况。所以我想要的是当活动B中出现某种情况时,活动A将从堆栈中移除,这样它就不会当用户按下后退按钮时出现。删除所有活动不是一种选择,因为在A之前还有其他活动,我不想销毁。我特别需要销毁活动A.
答案 0 :(得分:0)
当您开始活动B时,只需完成活动A.
类似的东西:
startActivty(intent);
this.finish();
this
指当前活动(活动A),intent
打算打开活动B.
编辑:仅在特定条件下删除活动A:
startActivityForResult(intent); // Starting Activity B.
然后在活动B中:
onBackPressed() {
setResult(...); // Set result as RESULT_OK etc based on condition. You can also send some data.
}
然后在活动A中再次:
onActivityResult(...) {
if ( ... ) // check the condition value from the result
finish();
}
答案 1 :(得分:0)
如果你不想让你的活动保持在后台堆叠,你也可以添加有意图的旗帜,
Intent intent= new Intent(...);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);
答案 2 :(得分: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
}
});
}
}
答案 3 :(得分:0)
从活动A开始活动B时,只需使用finish()
Intent intent=new Intent(A.this,B.class);
startActivty(intent);
this.finish();