0

我最近开始在 Phonegap 1.8 + Jquerymobile 1.1.0 + jquery 1.7.1 中为 Android 2.3.3 开发一个移动应用程序。我的问题是:我尝试以多种方式覆盖 Android 中的后退按钮,但没有任何效果。我试过使用

document.addEventListener("backbutton", handleBackButton, false);
function handleBackButton() {//do sth}

然后我刚刚在 Application.java 代码中覆盖了它。它的工作原理......几乎。我的第一个页面 (index.html) 仅用于登录,之后有主页 (main.html) 与其他页面的链接。除了登录和主页面之外,我已经覆盖了后退按钮以返回所有其他页面。在这两个页面上,它应该在 AlertDialog 中单击“是”后退出应用程序。好吧,在 MainPage 中它显示 AlertDialog 然后直接返回登录页面,甚至无需等待我的响应。在登录页面上,它只显示 AlertDialog 并等待我的反应。不知道为什么。这是我的一些代码。

public void onBackPressed() {

  AlertDialog.Builder builder = new AlertDialog.Builder(this);
  builder.setMessage("Are you sure you want to exit?")
  .setCancelable(false)
  .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
         public void onClick(DialogInterface dialog, int id) {
             SampleApplication.this.finish();
         }
     })
     .setNegativeButton("No", new DialogInterface.OnClickListener() {
         public void onClick(DialogInterface dialog, int id) {
              dialog.cancel();
         }
     });
  AlertDialog alert = builder.create();
  String testUrl = appView.getUrl();      

  if(testUrl.equals("file:///android_asset/www/index.html"))
  {
      alert.show();
  }
  if (testUrl.equals("file:///android_asset/www/main.html"))
  {
      alert.show();
  }
  if ((!testUrl.equals("file:///android_asset/www/index.html")) && (!testUrl.equals("file:///android_asset/www/main.html")))
  { 
      this.appView.goBack();

  }

}
4

1 回答 1

0

您可以做的是在您想要常规后退按钮行为的所有页面上使用常规后退按钮,但为需要不同行为的页面创建一个单独的按钮,并使其看起来像正常的后退按钮:

在您的标题栏中,只需添加一个锚点,您可以在其中添加自定义数据相关(并将其连接到您想要的任何功能),例如

<a data-rel="custombackbtn">Back</a>

然后将该 data-rel 添加到您的常规后退按钮样式(您的主题的 css 或常规 css)的任何位置,因此,只要提到 a[data-rel='back'] 添加 data-rel='custombackbtn' 例如

a[data-rel='back'], .ui-header a[data-rel='back'] {
*/Styling*/
}

改为

a[data-rel='back'], .ui-header a[data-rel='back'], a[data-rel='backbtn'], .ui-header a[data-rel='backbtn'] {
*/Styling*/
}
于 2012-06-15T02:13:30.647 回答