我知道这个问题已经在这里被问了很多次,但是我没有找到适合我的问题的答案。
以下代码可以禁用后退按钮:
@Override
public void onBackPressed() {
// Do Here what ever you want do on back press;
}
但是有没有办法在临时时间内禁用返回按钮,而不是整个Activity?
我知道这个问题已经在这里被问了很多次,但是我没有找到适合我的问题的答案。
以下代码可以禁用后退按钮:
@Override
public void onBackPressed() {
// Do Here what ever you want do on back press;
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
boolean result = false;
if (keyCode == KEYCODE_BACK) {
if (condition) {
result = true;
}
}
return result;
}
注意:
它也适用于古老的版本
从onKeyDown返回true会消耗默认行为
在需要禁用返回按钮的地方,你需要设置一个布尔标志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();
}
}
//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
}
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)
。例如,按钮单击。如果您多次单击按钮,则线程仅运行一次。因为在此代码中,isBackButtonDisable
变量是“某种方式”线程安全的。