使用 getOnBackPressedDispatcher 在后退按钮上退出应用程序

问题描述 投票:0回答:1

要在低于 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();
            }
        });
    }
}

然而,这不起作用。按后退按钮可让我回到第一个活动。

我做错了什么?

java android back-button
1个回答
0
投票

在转到第二个活动时,您应该通过调用 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
 }
}

此外,我建议阅读启动模式

© www.soinside.com 2019 - 2024. All rights reserved.