有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何检查是否单击了后退按钮

我有一个带按钮的应用程序。(见图)。此预览仅在用户未激活特定设置时发生。如果他按下按钮,他将进入设置。如果他按下返回键,他将返回设置。我现在想截取这个“后退”
此后退按钮直接位于智能手机上。如何拦截此活动?我发现了一些东西,不幸的是它没有给我这个。我有什么不对劲吗?还是有别的事?提前谢谢

  public class NfcSettingActivity extends AppCompatActivity {

    private Dialog epicDialog;
    private Button btn_nfc_navigate_setting;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_nfc_setting);
        btn_nfc_navigate_setting = findViewById(R.id.btn_nfc_navigate_setting);
        btn_nfc_navigate_setting.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(Settings.ACTION_NFC_SETTINGS));
            }
        });

    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        switch (item.getItemId()) {
            case 安卓.R.id.home:
                onBackPressed();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

    @Override
    public void onBackPressed() {
        super.onBackPressed();
        System.out.println("back pressed");
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            onBackPressed();
        }
        return super.onKeyDown(keyCode, event);
    }
}

enter image description here


共 (3) 个答案

  1. # 1 楼答案

    可能您忘记添加super.onBackPressed()

    override fun onBackPressed() {
        ...
        super.onBackPressed()
    }
    

    更新

    可能您应该使用^{}

    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        switch (item.getItemId()) {
            case android.R.id.home:
                onBackPressed();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
    

    甚至可能^{}

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            onBackPressed();
        }
        return super.onKeyDown(keyCode, event);
    }
    
  2. # 2 楼答案

    我就是这样理解你的问题的:

    NfcSettingActivity仅在未激活特定设置(可能是NFC)时显示。如果未设置,用户可以单击活动中的按钮,并将用户带到Android的NFC设置。一旦激活,用户单击后退按钮并将其带回NfcSettingActivity。此时,您想知道NFC设置是否已成功激活

    以下是您需要做的事情:您不需要再按按钮。您需要做的是检查NfcSettingActivity是否再次处于恢复状态。在NfcSettingActivity中,您需要具有以下内容:

    @Override
    protected void onResume() {
        super.onResume();
    
        // Do your NFC checking here!
        // Also, you might need to add a flag here to check if the user has been to the NFC Setting page already!
    }
    

    Understand the Activity Lifecycle

  3. # 3 楼答案

    在给super打电话之前,试着在背压上写下你想要的。onBackPressed();在重写的方法onBackPressed()中

    @Override
    public void onBackPressed() {
        System.out.println("back pressed");
        super.onBackPressed();
    }
    

    也可以使用log而不是println(“”)