Привязка событий в WebView на Android 2.2

Я не могу связать события касания и прокрутки в своем приложении с помощью WebView с простым примером кода, который отлично работает в браузере. Я использую JQuery Mobile. Любые идеи?

<!DOCTYPE html> 
<html> 
<head> 
<title>jQuery Mobile Events</title> 
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a3/jquery.mobile-           1.0a3.min.css" />
<script src="http://code.jquery.com/jquery-1.5.min.js"></script>
<script src="http://code.jquery.com/mobile/1.0a3/jquery.mobile-1.0a3.min.js"></script>
<script type="text/javascript">
$( function() {
$('body').bind( 'taphold', function( e ) {
alert( 'You tapped and held!' );
e.stopImmediatePropagation();
return false;
} );  
$('body').bind( 'swipe', function( e ) {
alert( 'You swiped!' );
e.stopImmediatePropagation();
return false;
} );  
} );
</script>  
</head>
<body> 
<div data-role="page" id="home">
<div data-role="header">
<h1>jQuery Mobile Events</h1>
</div>
<div data-role="content"> 
<p>Try:</p>
<ul>
  <li>Tapping and holding</li>
  <li>Swiping</li>
</ul>
</div>
</div>
</body>
</html>

Это мой код на Java:

WebView webview;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    webview = (WebView) findViewById(R.id.webview);
    webview.getSettings().setJavaScriptEnabled(true);
    webview.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
    webview.loadUrl("web-page-here");
    webview.addJavascriptInterface(new JavaScriptInterface(this), "Android");
    webview.setWebViewClient(new WebViewClient());
}

Вот интерфейс Javascript:

import java.io.IOException;
import android.content.Context;
import android.widget.Toast;

public class JavaScriptInterface {
Context mContext;
AudioRecord audiorecord;
/** Instantiate the interface and set the context */
JavaScriptInterface(Context c) {
    mContext = c;
}

/** Show a toast from the web page */
public void showToast(String toast) {
    Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
}

// OnSwipe() here?
}

Поэтому мне, вероятно, следует добавить метод здесь, и при обнаружении прокрутки его следует вызывать в JQuery с помощью Android.OnSwipe()? Почему приведенный выше код JQuery Mobile не работает для навигации? Разве WebView не должен работать как веб-браузер?


person PekkaK    schedule 30.03.2011    source источник
comment
Просто совет: существует более новая версия jQuery, чем 1.5 (1.5.1 и 1.5.2).   -  person naugtur    schedule 30.03.2011


Ответы (1)


  1. Вы должны показать, как вы реализовали JavaScriptInterface
  2. Кажется, даже у вас нет никакого распространения от JS к вашему фактическому мосту Android JS. В коде JS вы должны вызвать что-то вроде Android.onSwipe() и реализовать onSwipe в JavaScriptInterface.
person reflog    schedule 30.03.2011