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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何检查是否单击后退按钮相关的知识,希望对你有一定的参考价值。

我有一个带有按钮的应用。 (参见图片)。仅当用户尚未激活特定设置时,才进行此预览。如果按下按钮,将进入设置。如果他按回去,将返回到设置。我现在想拦截这个“后退”。此后退按钮直接在智能手机上。如何截获此活动?我发现了一些东西,不幸的是它没有给我这个。我有什么问题吗?还是还有其他东西?预先感谢。

  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 android.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

答案

这就是我对您的问题的理解:

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

另一答案

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

override fun onBackPressed() 
    ...
    super.onBackPressed()

更新

可能您应该使用onOptionsItemSelected

onOptionsItemSelected

甚至可能是@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);

onKeyDown
另一答案

只需在调用super.onBackPressed()之前尝试在背面按一下即可编写所需内容。在重写的方法onBackPressed()

onKeyDown

也使用日志代替println(“”)

以上是关于如何检查是否单击后退按钮的主要内容,如果未能解决你的问题,请参考以下文章

如何使用角度检测浏览器后退按钮单击事件?

根据最初检查的复选框值在后退按钮单击时重新加载 Angular 6 反应式表单

如何在不单击后退按钮的情况下隐藏键盘[重复]

Flutter单击后退按钮时如何执行

在android qtquick中单击后退按钮时应用程序退出

如何为后退按钮保留 Web 表单内容