我有一个活动,其中包含几个用户可编辑的项目(EditText字段,RatingBar等).如果按下后退/主页按钮并且已经进行了尚未保存的更改,我想提示用户.通过阅读android文档后,似乎这段代码应该放在onPause方法中.我已经尝试在onPause中放置一个AlertDialog,但是对话框会显示出来,然后立即关闭,因为没有任何东西阻止暂停完成.
这是我到目前为止所提出的:
@Override
protected void onPause() {
super.onPause();
AlertDialog ad = new AlertDialog.Builder(this).setMessage(
R.string.rating_exit_message).setTitle(
R.string.rating_exit_title).setCancelable(false)
.setPositiveButton(android.R.string.ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
// User selects OK, save changes to db
}
}).setNeutralButton(android.R.string.cancel,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
// User selects Cancel, discard all changes
}
}).show();
}
Run Code Online (Sandbox Code Playgroud)
我是在正确的轨道还是有另一种方式来完成我在这里要做的事情?任何帮助都会很棒!
我知道如何取消后退按键,以便活动/主窗口保持可见:
public void onBackPressed() {
return;
}
Run Code Online (Sandbox Code Playgroud)
我的目的是隐藏活动,但是,如果没有完成它,你如何在onBackPressed事件中做到这一点?
即我想获得onPause(),但不会唤起onBackPressed()默认行为,本质上调用finish().另一种说法是我想模仿onUserLeaveHint()?
任何帮助赞赏!
现在,当按下BACK键时,活动会被破坏.我怎样才能让它停止(即保持所有变量等等),而不是被销毁?
谢谢!
我想知道我是否可以覆盖背部和主页按钮的动作是一些情况.通常这些按钮应该像往常一样反应,但在某些情况下,某些设置为真,我想覆盖按钮并让它们调用我自己的方法.
我使用这两种方法来覆盖这些按钮:
@Override
public void onBackPressed() {
// call my backbutton pressed method when boolean==true
}
@Override
public void onAttachedToWindow() { this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
// call my homebutton pressed method when boolean==true
}
Run Code Online (Sandbox Code Playgroud) 我的应用程序只有两个基本活动和几个片段,我想在用户通过单击返回按到达特定基本片段时显示退出警报
override fun onBackPressed() {
if (drawer_layout.isDrawerOpen(GravityCompat.START)) {
drawer_layout.closeDrawer(GravityCompat.START)
} else {
// super.onBackPressed()
AlertDialog.Builder(this)
.setTitle("Exit Alert")
.setMessage("Do You Want To Exit Petals App?")
.setPositiveButton(android.R.string.ok) { dialog, whichButton ->
super.onBackPressed()
}
.setNegativeButton(android.R.string.cancel) { dialog, whichButton ->
}
.show()
}
Run Code Online (Sandbox Code Playgroud)
我在每个片段上都使用了 addtosatck
我想知道如何"BACK Button"在设备上检测硬盘或软盘?我搜索了但大多数时候我发现了这段代码
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
// do something on back.
return true;
}
return super.onKeyDown(keyCode, event);
}
Run Code Online (Sandbox Code Playgroud)
但我只需要检测设备上是否存在BACK按钮,或者不是硬或软的形式.
是否可以更改此代码:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
}
return super.onKeyDown(keyCode, event);
}
Run Code Online (Sandbox Code Playgroud)
所以,当我点击后退按钮时,它就像一个主页按钮?