Как создать контекст в android.content.Context и android.app.Activity? - PullRequest
1 голос
/ 27 февраля 2012

Я пытаюсь получить доступ к информации из Twitter и перехожу по этой ссылке:

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) {
        }

    }


}

1 Ответ

2 голосов
/ 27 февраля 2012

Документация по этой ссылке довольно понятна.Для строк:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...