如何检查后退按钮是否被点击
How to check if the back button was clicked
我有一个带按钮的应用程序。 (见图)。仅当用户未激活特定设置时才会出现此预览。如果他按下按钮,他就会进入设置。如果他按回去,他会回到设置。我现在想拦截这个 "back".
这个后退按钮直接在智能手机上。我怎样才能拦截这个activity?我找到了一些东西,不幸的是它没有给我这个。我有什么问题吗?或者还有别的东西吗?提前致谢。
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()
。
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);
}
}
甚至可能 onKeyDown
:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
onBackPressed();
}
return super.onKeyDown(keyCode, event);
}
我是这样理解你的问题的:
NfcSettingActivity
仅在未激活特定设置(可能是 NFC)时显示。如果未设置,用户可以在 activity 中单击您的按钮,并将用户带到 Android 的 NFC 设置。激活后,用户 单击后退按钮 并 him/her 返回 NfcSettingActivity
。此时你想知道NFC设置是否激活成功
这是您需要做的:您不需要捕捉返回按钮的按下。您需要做的是再次检查 NfcSettingActivity
是否处于 resumed 状态。在 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() 之前尝试在返回键上写下你想要的内容;在覆盖方法 onBackPressed()
@Override
public void onBackPressed() {
System.out.println("back pressed");
super.onBackPressed();
}
也使用日志代替 println("")
我有一个带按钮的应用程序。 (见图)。仅当用户未激活特定设置时才会出现此预览。如果他按下按钮,他就会进入设置。如果他按回去,他会回到设置。我现在想拦截这个 "back".
这个后退按钮直接在智能手机上。我怎样才能拦截这个activity?我找到了一些东西,不幸的是它没有给我这个。我有什么问题吗?或者还有别的东西吗?提前致谢。
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()
。
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);
}
}
甚至可能 onKeyDown
:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
onBackPressed();
}
return super.onKeyDown(keyCode, event);
}
我是这样理解你的问题的:
NfcSettingActivity
仅在未激活特定设置(可能是 NFC)时显示。如果未设置,用户可以在 activity 中单击您的按钮,并将用户带到 Android 的 NFC 设置。激活后,用户 单击后退按钮 并 him/her 返回 NfcSettingActivity
。此时你想知道NFC设置是否激活成功
这是您需要做的:您不需要捕捉返回按钮的按下。您需要做的是再次检查 NfcSettingActivity
是否处于 resumed 状态。在 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() 之前尝试在返回键上写下你想要的内容;在覆盖方法 onBackPressed()
@Override
public void onBackPressed() {
System.out.println("back pressed");
super.onBackPressed();
}
也使用日志代替 println("")