【发布时间】:2026-01-28 13:20:05
【问题描述】:
我有一个带有按钮的应用程序。 (见图)。仅当用户未激活某个设置时才会出现此预览。如果他按下按钮,他就会进入设置。如果他按回去,他就会回到设置。我现在想拦截这个“后退”。
这个后退按钮直接在智能手机上。如何拦截此活动?我找到了一些东西,不幸的是它没有给我这个。我有什么问题吗?还是有别的东西?提前致谢。
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);
}
}
【问题讨论】:
-
在没有工作覆盖???
-
是
Activity还是Fragment? -
您正在使用 println。您需要改用日志。像这样:
Log.d("some tag", "some message");了解更多信息,请访问:developer.android.com/studio/debug/am-logcat -
我按下按钮并跳转到 NFC 设置。如果我现在按下返回按钮,我会回到之前的屏幕。不幸的是,它并没有告诉我他执行了这个方法
onBackPressed ()。所以他不做这个方法。 -
所以该方法的工作原理是这样的,只要我从窗口中按下后退按钮,它就会执行它。但是当我按下设置的后退按钮时,什么也没有发生。我想要一个方法来告诉我它是否来自这个后退按钮。
标签: java android nfc activity-lifecycle onbackpressed