【问题标题】:How to show confirm alert when Android Back button is pressed?按下Android后退按钮时如何显示确认警报?
【发布时间】:2015-04-13 18:41:43
【问题描述】:

我想在 Android 上按下后退按钮时在 Webview 页面上实现警报。我应该使用什么代码?

我在 view1.js 中编写了以下代码,但是在 Android 警报上按后退按钮时没有显示,它只是转到主屏幕:

$.webview1.url=Alloy.Globals.baseurl;
if(Ti.Platform.osname=='android'){
    $.webview1.enableZoomControls=false;
}

$.webview1.addEventListener('androidback',function(e){
    // show alert
    alert("Do you want to exit?");
    dialog.show();
});

但它不起作用。有什么解决办法吗?

【问题讨论】:

    标签: android titanium titanium-mobile titanium-alloy


    【解决方案1】:

    看看这个:

    $.index.addEventListener('androidback', function(e) {
           if ($.webview1.canGoBack())
               $.webview1.goBack();
           else
               alert('open alert');
    });
    

    【讨论】:

      【解决方案2】:

      试试这个:

      //create window
      var window = Titanium.UI.createWindow();
      
      //create webview
      var webview = Titanium.UI.createWebView({
          height : Ti.UI.FILL,
          width : Ti.UI.FILL,
          url : 'http://stackoverflow.com/'
      });
      
      //add webview
      window.add(webview);
      
      //add event listener
      window.addEventListener('androidback', function(e) {
          alert('open alert');
      });
      
      window.open();
      

      文档: http://docs.appcelerator.com/titanium/3.0/#!/api/Titanium.UI.Window-event-androidback

      【讨论】:

      • 感谢 Jagu,但这里的问题是 Webview 在单独的窗口中打开。但是,在我的情况下,无论是对于本机屏幕还是 webview,我都会在我的应用程序中使用页眉和页脚常量打开它,并且在它的顶部,我的应用程序的第一页是 webview。有什么建议可以解决我的问题吗?
      • 我的 xml 文件有 为 javascript $.webview1.url=Alloy.Globals.baseurl; if(Ti.Platform.osname=='android'){ $.webview1.enableZoomControls=false; }
      • 将事件 'androidback' 添加到该视图的父窗口。
      • 我相信它的“android:back”带有冒号。
      • @jagu 是正确的,问题是 Molly 使用的是视图而不是窗口...我相信您需要使用窗口
      【解决方案3】:

      WebView 没有点击 android 的后退按钮的事件,但 Window 有,这就是它没有显示警报对话框的原因。

      dialog.show(); 中还有另一个错误,我没有看到您对该对话框的初始化,并且您还在它之前调用了 alert。 alert 不需要调用任何内容来显示,但 AlertDialog 确实如此,用户最好看到标题而不是单词 alert,所以如果它会处理用户,请始终使用 AlertDialog

      试试下面的代码:

      index.xml 文件:

      <Alloy>
          <Window id="win" onAndroidback="showExitDialog">
              <WebView id="webView" url="http://www.google.com" />
          </Window>
          <AlertDialog id="dialog" onClick="dialogClicked" title="Exit"
              message="Sure to exit?" cancel="1">
              <ButtonNames>
                  <ButtonName>Confirm</ButtonName>
                  <ButtonName>Cancel</ButtonName>
              </ButtonNames>
          </AlertDialog>
      </Alloy>
      

      index.js 文件应如下所示:

      $.win.open();
      function showExitDialog() {
          $.dialog.show();
      }
      
      function dialogClicked(e) {
          if(e.index == 0) { // If the user clicked confirm
              $.win.close(); // Close the window or do whatever you want here
          }
      }
      

      我建议阅读文档,一切都在那里,检查 WebViewWindowAlertDialog 文档。

      【讨论】:

      • 当我使用上面的代码使用 Window 而不是 View 时,页面会崩溃。
      • 我已经编辑了代码,我忘记打开窗口,并且url的格式不正确。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-16
      • 1970-01-01
      • 1970-01-01
      • 2020-04-12
      • 2011-06-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多