2011-07-21 16 views
2

私は最近、Twitter APIとOAuthのロープを学ぶためにAndroid向けの簡単なTwitterアプリを書いています。WebView.loadUrl(url)は何もしません

アプリの主なアクティビティは、単にユーザー名を尋ねるだけです。次に、OAuth & Twitter API呼び出しを処理する別のアクティビティを呼び出します。ユーザーを認可ページにリダイレクトし、ユーザーが終了した後にアプリケーションに戻ります。

以前はうまくいきましたが、webview.loadUrl(authorizationURL)を呼び出すと何らかの理由で何も起こりません。何も起こりません。

@Override 
public void onResume() { 
    super.onResume(); 
    try { 

     if(weNeedCredentials()) { 
      obtainCredentials(); 
     } 

     follow(mUsername); 

    } catch (OAuthException oae) { 
     // omitted 
    } 
} 


private boolean weNeedCredentials() { 
    // assume the method returns true 
} 


private void obtainCredentials() { 
    final Token requestToken = mOauthService.getRequestToken(); 
    String authUrl = mOauthService.getAuthorizationUrl(requestToken); 
    // I verified that authUrl is the correct url (and != null) 

    final WebView oauthView = (WebView) findViewById(R.id.oauthview); 

    oauthView.setWebViewClient(new WebViewClient() { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      if(someCondition) { 
       oauthView.setVisibility(View.GONE); 

       doOtherStuff(); 

       return true; 
      } 
      return super.shouldOverrideUrlLoading(view, url); 
     } 
    }); 

    oauthView.getSettings().setJavaScriptEnabled(true); 
    oauthView.loadUrl(authUrl); 

} 

はここに私のレイアウトxmlファイルです:私はここに私のコードです...しかしWebViewのものに影響を与える何かを変更したことがない

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

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

</LinearLayout> 

とも私はマニフェストで適切なインターネットアクセス権が含まれています。

WebViewCoreThreadはアプリケーションの稼動中に実行され、後でWebViewWorkerThreadがポップアップしますが、WebViewは表示されません(白い画面でさえありません)。アプリは決してブロックされません。あたかもloadUrl()行がコメントアウトされたかのように動作し続けます。

私は自分の携帯電話(Droid X2)とエミュレータで同じ結果をテストしました。どんな助けでも大歓迎です。

ありがとうございます!

答えて

2

loadUrl()行が単にコメントアウトされたかのように動作し続けます。

これは常に「loadUrl()行がコメントアウトされたかのように動作し続けます」。 loadUrl()は非同期であり、ブロックしません。カフオフ

、次のいずれか

  • weNeedCredentials()false、または
  • follow()はUIを交換している、または
  • ツイッターをリダイレクトを行っている、とsomeConditiontrueあるので、あなたが作っている返しますWebViewGONEすぐに
  • ロード中の問題があります。
+0

loadUrl()を同期的に実行する方法はありますか?アプリが正常に機能するためには、WebViewをfollow()の呼び出しの前に起動する必要があります。 – bmat

+1

@Blake M .: "loadUrl()を同期して実行する方法はありますか?" - いいえ。 "WebViewは、アプリケーションが正常に機能するためにfollow()を呼び出す前に起動する必要があります。 - ページが読み込まれるまで 'follow()'を呼び出さないでください。 – CommonsWare

+0

さて、それは十分に単純だった..今の魅力のように動作します。本当にありがとう! – bmat

関連する問題