Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检查是否单击了“后退”按钮_Java_Android_Nfc_Activity Lifecycle_Onbackpressed - Fatal编程技术网

Java 如何检查是否单击了“后退”按钮

Java 如何检查是否单击了“后退”按钮,java,android,nfc,activity-lifecycle,onbackpressed,Java,Android,Nfc,Activity Lifecycle,Onbackpressed,我有一个带按钮的应用程序。(见图)。此预览仅在用户未激活特定设置时发生。如果他按下按钮,他将进入设置。如果他按下返回键,他将返回设置。我现在想截取这个“后退”。 此后退按钮直接位于智能手机上。如何拦截此活动?我发现了一些东西,不幸的是它没有给我这个。我有什么不对劲吗?还是有别的事?提前谢谢 public class NfcSettingActivity extends AppCompatActivity { private Dialog epicDialog; privat

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

  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);
    }
}

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

更新

可能您应该使用:

甚至可能:


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

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!
}

在调用super.onBackPressed()之前,只需在backpress上写下您想要的内容即可;在重写的方法onBackPressed()中


在不使用覆盖时,也使用log而不是println(“”

)?是
活动
还是
片段
?您使用的是println。您需要改为使用日志。像这样:
Log.d(“一些标签”,“一些消息”)更多信息请点击此处:我按下按钮,跳转至NFC设置。如果我现在按下后退按钮,我会回到以前的屏幕。不幸的是,它没有告诉我他在backpressed()上执行了这个方法。所以他不做这个方法。所以这个方法是这样工作的,只要我从窗口按下后退按钮,它就会执行它。但当我按下设置的后退按钮时,什么也没发生。我想有一个方法告诉我它是否来自这个后退按钮。@FischerKlaus,请参阅。您是否在代码中使用了
onKeyDown
onkeydup
?或者
onOptionsItemSelected
?不,我没有用它!我来检查一下。谢谢,谢谢。尝试了新的答案。不幸的是,它仍然不起作用(我编辑了我的问题。也许我有更多的错误。哦,我的上帝!非常感谢!我的方法错了!难怪它不起作用。非常感谢你花时间。这不是一个很好的尝试检测用户是否打开了NFC的方法,因为如果不是单击按钮启动
设置。操作\u NFC\u设置 >用户进入快速设置以打开NFC,而不是“代码> NFCSETIGNACTION < /CODE >,永远不会停顿,因此无法恢复。最好使用广播接收器来检测NFC设置状态变化。这是正确的。OP需要考虑这种情况。希望将用户带到NFC设置页面,而不是快速设置。
@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);
}
@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!
}
@Override
public void onBackPressed() {
    System.out.println("back pressed");
    super.onBackPressed();
}