假设我有一个名为A,B,C,D的活动。现在,考虑将A作为根活动启动,将B从A启动,将C从B启动,将D从C启动。 现在,我在活动D中有一个名为“成功”的按钮。如果想在活动D中按“成功”按钮,则应从历史记录堆栈中删除活动C并转到活动B,但在按下时活动D中的键应显示活动C而不是活动B,并从堆栈中清除D。请有人能帮助我解决此问题吗?
答案 0 :(得分:0)
将此代码添加到您的Activity_D
中,单击Button
btnSuccess.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(Activity_D.this, Activity_B.class));
finishAffinity();
}
});
还将此内容添加到您的Activity_D
中到按下了向后处理按钮。
@Override
public void onBackPressed() {
finish();
super.onBackPressed();
}
从Activity_C到Activity_D
startActivity(new Intent(Activity_C.this, Activity_D.class));
请勿在此处致电finish()
。
答案 1 :(得分:0)
单击“成功”按钮时,可以使用以下代码行打开B活动:
Intent d_intent = new Intent(D.this, B.class);
d_intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
d_intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(d_intent);
finish();
由于Intent.FLAG_ACTIVITY_CLEAR_TOP
,此处活动B将从后堆栈开始,而不是从新实例开始,并且Intent.FLAG_ACTIVITY_NEW_TASK
将清除堆栈并使其成为顶层。因此,当我们按下“后退”按钮时,整个应用程序将被终止。然后在上按时,您只需拨打
finish();
希望它会对您有所帮助。