我知道这个问题已在这里多次被问到,但我没有找到我的问题的属性答案。
此代码可以禁用后退按钮:
@Override
public void onBackPressed() {
// Do Here what ever you want do on back press;
}
但无论如何我可以暂时禁用后退按钮,而不是整个活动?
答案 0 :(得分:13)
它是禁用后退按钮的完美解决方案
@Override
public void onBackPressed() {
if(condition to check){
// this block disable back button
}else{
// this block enable back button
super.onBackPressed();
}
}
答案 1 :(得分:4)
Dixit的好回答。只是另一种选择
public boolean onKeyDown(int keyCode, KeyEvent event) {
boolean result = false;
if (keyCode == KEYCODE_BACK) {
if (condition) {
result = true;
}
}
return result;
}
N.B ..
它也适用于古代版本
从onKeyDown返回true会消耗默认行为
答案 2 :(得分:3)
您必须设置boolean flag
,您必须要求禁用后退按钮设置flag value true
;
在 onBackPressed()中,您必须根据 @Dixit 说明
@Override
public void onBackPressed() {
if(condition to check){
// this block disable back button
}else{
// this block enable back button
super.onBackPressed();
}
}
答案 3 :(得分:1)
如果要在一段时间内禁用后退按钮,请使用此功能,
//for 5 sec = 5000
countDownTimer = new CountDownTimer(5000,1000) {
@Override
public void onTick(long millisUntilFinished) {
txtWait.setTextColor(getResources().getColor(R.color.errorcolor));
txtWait.setText("Wait( " + millisUntilFinished / 1000+" sec)");
onBackPressed();
}
@Override
public void onFinish() {
YourActivityName.super.onBackPressed();
}
}.start();
在覆盖方法中:
@Override
public void onBackPressed() {
//super.onBackPressed(); commented this to disable the back press
}
答案 4 :(得分:0)
authenticatedAttributes
注意:您也可以在其他情况下使用
YourActivity extends AppCompatActivity{ boolean isBackButtonDisabled = false; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState) setContentView(R.layout.somelayout); disableBackButton(4000); //<--Back button is disabled } @Override public void onBackPressed(){ if(!sBackButtonDisabled){ super.onBackPressed(); } } private void disableBackButton(final int timeInMilis){ if(!isBackButtonDisabled) { isBackButtonDisabled = true; //<-- Keep it outside Thread code Thread t = new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(timeInMilis); } catch (InterruptedException e) { } finally { isBackButtonDisabled = false; } } }); t.start(); } } }
。例如,单击按钮。如果 您单击按钮多次,线程将只运行一次。因为在这段代码中disableBackButton(time)
变量“以某种方式”是线程安全的。