要在低于 33 的 API 中覆盖后退按钮的操作,可以使用
@Override
public void OnBackPressed(){
finish();
}
现在这已被弃用,我正在尝试让 getOnBackPressedDispatcher 工作。
从第一个活动开始,我使用回调按钮开始第二个活动:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void openSecondActivity(View view) {
Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);
}
}
现在,在第二个活动中,我想要后退按钮退出应用程序。
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed(){
finish();
}
});
}
}
然而,这不起作用。按后退按钮可让我回到第一个活动。
我做错了什么?
在转到第二个活动时,您应该通过调用 finish 来关闭第一个活动。
公共类 MainActivity 扩展 AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void openSecondActivity(View view) {
Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);
finish(); /// <----- HERE
}
}
此外,我建议阅读启动模式。