我为考试做了两项活动。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
...
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this, SubActivity.class));
}
}
@Override
protected void onDestroy() {
super.onDestroy();
}
}MainActivity中的这个按钮可以启动SubActivity。
public class SubActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
...
}
@Override
protected void onDestroy() {
super.onDestroy();
}
@Override
public void onBackPressed() {
startActivity(new Intent(SubActivity.this, MainActivity.class));
}
}在SubActivity中,按后退按钮,它不会调用SubActivity类中的onDestroy()并启动MainActivity。我想做的是,当我完成SubActivity onDestroy()时,如何调用MainActivity?当我按下SubActivity onDestroy()中的后退按钮时,它不会调用MainActivity。有没有像使用Intent.FLAG_ACTIVITY这样的解决方案?
发布于 2020-01-30 02:25:57
您应该在finish() SubActivity in onBackPressed中销毁它,然后返回到您的MainActivity,而不是执行startActivity。在许多情况下,即使不亲自实现onBackPressed,也会出现这种行为。当前代码正在启动第二个MainActivity。
发布于 2020-01-30 04:55:18
提出的解决方案这里对我有效:
Java中的:-
Intent i = new Intent(OldActivity.this, NewActivity.class);
// set the new task and clear flags
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(i);In Kotlin:-
val i = Intent(OldActivity.this, NewActivity::class.java)
// set the new task and clear flags
i.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
startActivity(i)https://stackoverflow.com/questions/59978214
复制相似问题