2014-01-05 66 views
0

的PhoneGap:2.9.0PhoneGap的后退按钮:后退和退出

安卓4.4.2

我想用 “后退按钮”:如果当前页面不是首页,返回,否则退出APP,但它不起作用,为什么?

这里是我的代码:MainActivity.java

import android.os.Bundle; 
import android.view.KeyEvent; 
import android.app.AlertDialog; 
import android.app.AlertDialog.Builder; 
import android.content.DialogInterface; 
import org.apache.cordova.*; 

public class MainActivity extends DroidGap { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     super.setIntegerProperty("splashscreen", R.drawable.splash); 
     super.loadUrl("http://www.mydomain.com", 0); 
    } 

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if((keyCode == KeyEvent.KEYCODE_BACK) && appView.canGoBack()) 
     { 
      appView.goBack(); 
      return false; 
     } 

     if(keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { 
      dialog(); 
      return true; 
     } 

     return super.onKeyDown(keyCode, event); 
    } 

    protected void dialog() { 
     AlertDialog.Builder builder = new Builder(MainActivity.this); 
     builder.setMessage("Exit The APP?"); 
     builder.setTitle("Are You Sure"); 
     builder.setPositiveButton("OK", 
      new android.content.DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        dialog.dismiss(); 
        android.os.Process.killProcess(android.os.Process.myPid()); 
       } 
      }); 
     builder.setNegativeButton("Cancel", 
      new android.content.DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which){ 
        dialog.dismiss(); 
       } 
      }); 
     builder.create().show(); 
    } 
} 

感谢您的帮助和良好的祝愿!

回答

0

更妙的是,处理您的科尔多瓦内部应用程序的情况下,通过连接线了一个事件监听器...

document.addEventListener('backbutton', this.onBackKeyDown, false); 

然后,写你的自己的逻辑...

onBackKeyDown: function() { 
    ... insert your logic here... 
} 

这个答案受灵感this post。请确认哪一个最适合您。

0

我曾经使用onBackPressed来防止使用后退按钮,但它似乎在4.4.2中使用cordova 3.3似乎不起作用。也许只是移动你的代码到这个事件......

@Override 
public void onBackPressed() { 
    ... insert your relevant onkeydown logic here. 
}