2009-09-08 9 views
3

J'ai une simple activité WebView qui suit l'exemple Hello, WebView pour activer JavaScript et surcharger shouldOverrideUrlLoading().Les liens WebView JavaScript fonctionnent au toucher mais pas lors de l'utilisation de trackball

Cette activité fonctionne très bien lorsque l'utilisateur touche des liens sur la page Web. Cependant, si l'utilisateur utilise la boule de commande et clique sur un lien, le chargement de la page qui en résulte montre une page avec JavaScript désactivé.

public class ViewUrl extends Activity { 
    protected WebView view; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.view_url); 

     final String url = "http://www.opentable.com/phone/reviews.aspx?rid=2947"; 

     view = (WebView) findViewById(R.id.widget1); 
     view.getSettings().setJavaScriptEnabled(true); 
     view.loadUrl(url); 
     view.setWebViewClient(new WebViewClient() { 
      @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       view.loadUrl(url); 
       return true; 
      } 

     }); 
    } 
} 

Le fichier view_url.xml est simple:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <WebView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:id="@+id/widget1" /> 

</RelativeLayout> 

Voici quelques captures d'écran montrant à la fois le comportement correct et incorrect.

Cliquez à l'aide Touch (CORRECT):

Click using Touch (CORRECT) http://img.skitch.com/20090908-g2acnrpb1riuq11ys3p1u6fd4d.png

Cliquez en utilisant trackball (INCORRECT):

Click using Trackball (INCORRECT) http://img.skitch.com/20090908-my23yxakudwhheq875j2hcwg6h.png

Toute idée comment je peux résoudre le comportement Trackball être le même que le comportement tactile? Ou au moins activer JS lorsque les liens sont cliqués via la boule de commande?

Répondre

1

Il semble que l'exemple "Hello, WebView" est rompu. Sur la suggestion de quelqu'un sur le canal IRC, j'ai supprimé le remplacement de shouldOverrideUrlLoading() et tout semble fonctionner à la légère.

Code de travail révisé:

public class ViewUrl extends Activity { 
    protected WebView view; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.view_url); 

     final String url = "http://www.opentable.com/phone/reviews.aspx?rid=2947"; 

     view = (WebView) findViewById(R.id.widget1); 
     view.getSettings().setJavaScriptEnabled(true); 
     view.loadUrl(url); 
     view.setWebViewClient(new WebViewClient()); // probably not necessary if you don't do anything else with the WebViewClient 
    } 
} 
Questions connexes