在应用程序中我正在使用gps查找用户位置。在Async预执行方法中我显示了一个toast。我希望在我显示toast时应该禁用后退按钮
aftr找到位置我想在后执行中启用后退按钮!
禁用我使用的后退按钮。但这不起作用
OnKeyListener mainScreenKeyListener = new OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
boolean disableEvent = false;
if (event.getKeyCode()==KeyEvent.KEYCODE_BACK) {
disableEvent = true;
}
return disableEvent;
}
};
答案 0 :(得分:4)
您可以通过
声明全局变量disableEvent
final boolean disableEvent;
您的Preexecute
方法可以通过
false
disableEvent = false;
您的Postexecute
方法可以通过
true
disableEvent = true;
你可以覆盖onBackPressed,如下所示:
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
if (disableEvent)
{
// do nothing
}
else
{
// do something
}
}
答案 1 :(得分:2)
你去吧
分配一个静态变量,并在onPreExecute中将其值设置为“NO”。 在onPostExecute中将其值赋值为“YES”。
并在onBackPressed中编写以下代码。
@Override
public void onBackPressed() {
if (decision.equals("NO")) { //Here no means dont allow user to go back
} else {
super.onBackPressed(); // Process Back key default behavior.
}
}
答案 2 :(得分:1)
您好禁用,只需调用上述功能
即可public void onBackPressed()
{
}
启用
public void onBackPressed()
{
super.onBackPressed();
super.finish();
//Intent
}
if you want both set flag inside the function
答案 3 :(得分:0)
覆盖活动中的onBackPress方法
Class A
{
public static boolean isToastShown=false;
@Override
public void onBackPressed() {
if(isToastShown==true)
return false;
else
super.onBackPressed();
}
}
@Override
protected void onPreExecute() {
super.onPreExecute();
//Show your toast here
A.isToastShown=true;
new CountDownTimer(2000,2000) {
@Override
public void onTick(long millisUntilFinished) {
// TODO Auto-generated method stub
}
@Override
public void onFinish() {
A.isToastShown=false;
}
}.start();
}