我有一个使用Android手机上的后退按钮的功能,但由于某些原因,当我使用它时,应用程序会返回2页而不是预期的页面。
这就是我的代码目前的样子:
function onBackKeyDown()
{
currentPage = $.mobile.activePage.attr('id');
if(currentPage == "createUser")
{
$.mobile.changePage("#logIn");
alert("Return To Login Page");
currentPage = "";
}
else if(currentPage == "cardDetails")
{
$.mobile.changePage("#createUser");
alert("Return To Create User");
currentPage = "";
}
else if(currentPage == "mainMenu")
{
$.mobile.changePage("#logIn");
alert("Return To Log In");
currentPage = "";
}
else if(currentPage == "locationPage")
{
$.mobile.changePage("#mainMenu");
alert("Return To Main Menu");
currentPage = "";
}
else if(currentPage == "editUserPage")
{
$.mobile.changePage("#mainMenu");
alert("Return To Main Menu");
currentPage = "";
}
else if(currentPage == "editCardDetailsPage")
{
$.mobile.changePage("#editUserPage");
alert("Return To Edit User");
currentPage = "";
}
else
alert("TEST");
}
例如,如果我在cardDetails
并按下后退按钮,则会返回createUser
并继续返回logIn
。我的代码中是否有任何可能导致此问题的内容,我已经尝试将currentPage重置为空并添加在其他内容中,认为当它们只是if语句时它们是单独进行的
编辑:请求的Java代码:
import android.os.Bundle;
import org.apache.cordova.DroidGap;
public class FnBApp extends DroidGap {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.main);
super.loadUrl("file:///android_asset/www/index.html");
}
}
任何帮助将不胜感激
约翰
答案 0 :(得分:0)
你需要重载android后退按钮而不是仅检测并对其进行操作。
删除密钥监听器,或者在有KEY_BACK时返回true
你需要以下内容才能收回密钥(确保不要拨打超级电话)
另外,如果您计划在后台运行服务,请务必查看startForeground()并确保持续通知,否则如果需要释放内存,android会终止您的服务
@Override
public void onBackPressed() {
Log.d("CDA", "onBackPressed Called");
Intent setIntent = new Intent(Intent.ACTION_MAIN);
setIntent.addCategory(Intent.CATEGORY_HOME);
setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(setIntent);
}
更新:针对特定应用的伪造代码的更改
public class FnBApp extends DroidGap {
....
@Override
public void onBackPressed() {
Log.d("CDA", "onBackPressed Called");
//if super.getUrl shows a specific page:
if() {
super.loadUrl("file://android_asset/www/index.html#login");
};
}
Android - How To Override the "Back" button so it doesn't Finish() my Activity?
答案 1 :(得分:0)
如果您使用的是Cordova,可能您想在Android以外的其他设备中使用您的代码?在这种情况下,您根本不想使用任何Java。回到最初的问题,这会有帮助吗?:
function onDeviceReady() {
// Register the event listener
document.addEventListener("backbutton", onBackKeyDown, false);
}
(摘自this post)