为什么禁用后退按钮代码在 Android 中不起作用?
Why is the disable back button code not working in Android?
我想禁用我的 android 应用程序的后退按钮。我想要做的就是,当用户按下后退按钮时,什么都不应该发生。基本上就像 JavaScript 中的 return false。以下是我当前使用的 MainActivity 中的代码:
package com.ws.gostock;
import android.os.Bundle;
import org.apache.cordova.*;
public class MainActivity extends CordovaActivity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// Set by <content src="index.html" /> in config.xml
loadUrl(Config.getStartUrl());
}
@Override
public void onBackPressed()
{
System.out.println("back pressed");
}
}
尝试 运行 在调试模式下,发生的情况是,当我按下后退按钮时,应用程序关闭,然后代码开始调试。不知道为什么。
我解决了这个问题。这是我使用的代码:
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// Set by <content src="index.html" /> in config.xml
loadUrl(Config.getStartUrl());
appView.setOnKeyListener(new View.OnKeyListener()
{
public boolean onKey(View v, int keyCode, KeyEvent event)
{
if (event.getAction() == KeyEvent.ACTION_UP)
{
if(keyCode == KeyEvent.KEYCODE_BACK)
{
if(t == null)
{
t = new Timer();
t.schedule(new reInitializeTimer(), 0, 1*1000);
Toast.makeText(getApplicationContext(), " Press Back again to Exit ", Toast.LENGTH_SHORT).show();
}
else if(backpress >= 1)
{
finish();
}
return true;
}
return onKeyUp(keyCode, event);
}
return onKeyDown(keyCode, event);
}
});
}
class reInitializeTimer extends TimerTask
{
public void run()
{
backpress++;
if(backpress > 3)
{
backpress = 0;
t.cancel();
t = null;
}
}
}
我想禁用我的 android 应用程序的后退按钮。我想要做的就是,当用户按下后退按钮时,什么都不应该发生。基本上就像 JavaScript 中的 return false。以下是我当前使用的 MainActivity 中的代码:
package com.ws.gostock;
import android.os.Bundle;
import org.apache.cordova.*;
public class MainActivity extends CordovaActivity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// Set by <content src="index.html" /> in config.xml
loadUrl(Config.getStartUrl());
}
@Override
public void onBackPressed()
{
System.out.println("back pressed");
}
}
尝试 运行 在调试模式下,发生的情况是,当我按下后退按钮时,应用程序关闭,然后代码开始调试。不知道为什么。
我解决了这个问题。这是我使用的代码:
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// Set by <content src="index.html" /> in config.xml
loadUrl(Config.getStartUrl());
appView.setOnKeyListener(new View.OnKeyListener()
{
public boolean onKey(View v, int keyCode, KeyEvent event)
{
if (event.getAction() == KeyEvent.ACTION_UP)
{
if(keyCode == KeyEvent.KEYCODE_BACK)
{
if(t == null)
{
t = new Timer();
t.schedule(new reInitializeTimer(), 0, 1*1000);
Toast.makeText(getApplicationContext(), " Press Back again to Exit ", Toast.LENGTH_SHORT).show();
}
else if(backpress >= 1)
{
finish();
}
return true;
}
return onKeyUp(keyCode, event);
}
return onKeyDown(keyCode, event);
}
});
}
class reInitializeTimer extends TimerTask
{
public void run()
{
backpress++;
if(backpress > 3)
{
backpress = 0;
t.cancel();
t = null;
}
}
}