2012-02-27 57 views
1

我試圖從Twitter獲取信息,我跟着這個鏈接:如何在android.content.Context和android.app.Activity中創建上下文?

http://code.google.com/p/sociallib/wiki/SocialLibGuide

我不明白下面兩行,它顯示錯誤下面幾行。

 twitter.requestAuthorization(this); 
     twitter.authorize(this); 

下面添加完整的代碼。

它說,anroid.content.Context和android.app.Activity是必需的。我真的不知道如何添加它們。任何幫助表示讚賞。

package sociallibjar; 

import android.R; 
import android.content.Context; 
import com.expertiseandroid.lib.sociallib.connectors.SocialNetworkHelper; 
import com.expertiseandroid.lib.sociallib.connectors.TwitterConnector; 
import com.expertiseandroid.lib.sociallib.model.twitter.TwitterUser; 
import org.scribe.oauth.Token; 

public class TwitterApp { 

    String CONS_KEY = ""; 
    String CONS_SEC = ""; 
    String CALLBACK = ""; 

    public void twiter() { 
     try { 
      TwitterConnector twitter = SocialNetworkHelper.createTwitterConnector(CONS_KEY, CONS_SEC, CALLBACK); 
      twitter.requestAuthorization(this); 
      twitter.authorize(this); 
      Token at = twitter.getAccessToken(); 
      String token = at.getToken(); //You can store these two strings 
      String secret = at.getSecret();//in order to build the token back 


      Token myAccessToken = new Token(token, secret); 
      twitter.authentify(myAccessToken); 
      TwitterUser me = twitter.getUser(); //Retrieves the current user 
      String nickname = me.getUsername(); //Some information is available through method calls 
      int nbFollowers = me.nbFollowers; //Some is available through object fields 

      System.out.println("You are logged in as " + nickname + " and you have " + nbFollowers + " followers"); //Now we can print the information we retrieved onscreen 

      twitter.tweet("Tweeting from code"); //A simple tweet 

      twitter.tweet("I have " + twitter.getUser().nbFollowers + " followers!");//A more elaborate tweet 
      //twitter.logout(this); //Providing this code is located in an Activity (or Context) class 


     } catch (Exception e) { 
     } 

    } 


} 
+0

請給多一點的代碼,如在哪裏被寫入這兩條線。 – MByD 2012-02-27 11:18:53

回答

2

該鏈接的文檔很清楚。對於行:

twitter.requestAuthorization(this); //Providing this code is located in an Activity (or Context) class 
twitter.authorize(this); 

this表示Context(一個例如Activity)。 現在,因爲您的課程TwitterApp未延伸Activity您需要參考Context才能提供給這些方法。對於這一點,你可以,例如,一個構造函數添加到您的TwitterApp類,需要一個Context

private Context ctx; //-<field in the TwitterApp class 

public TwitterApp (Context ctx) { 
    this.ctx = ctx; 
} 

,然後你使用這些方法這方面:

twitter.requestAuthorization(ctx); 
twitter.authorize(ctx); 

在你的活動你實例在TwitterApp類只是通過this

TwitterApp obj = new TwitterApp(this); 
+0

謝謝slukian,我們可以在android之外執行程序嗎?因爲當我嘗試執行該程序時,我收到以下異常。線程「main」中的異常java.lang.RuntimeException:Stub! at android.content.Context。 (Context.java:4) at android.content.ContextWrapper。 (ContextWrapper.java:5) at android.view.ContextThemeWrapper。(ContextThemeWrapper.java:5) at android.app.Activity。 (Activity.java:6) at sociallibjar.TwitterApp。 (TwitterApp.java:19) – SAR 2012-02-27 12:41:08

+0

@Bradan我不知道你的意思是「外部android」,但答案是否定的。您正在使用android的庫設計,因此需要以「Context」的形式引用android系統。 – Luksprog 2012-02-27 13:17:01

+0

謝謝,我現在明白了。外部=>除了Android操作系統 – SAR 2012-02-27 13:31:50