0

Twitterにログインできるアプリを書いてみました。私のライブラリは Twitter4j です。onResumeメソッドが呼び出されるまで、コードは機能します。の

exception(Unable to resume Activity...NullPointerException)メソッドのこの行にあります

onResume():

AccessToken acc = twitter.getOAuthAccessToken(requestToken,verifier);

しかし、私は私のエラーがどこにあるのか分かりません。誰かが私を助けることができますか??

public class MainActivity extends Activity {

    private Twitter twitter;
    private RequestToken requestToken;
    private static RequestToken re;
    final public static String CALLBACK_URL = "app://casa";
    private RequestToken priv = null;

    @SuppressLint("NewApi")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button b = (Button) findViewById(R.id.button1);

        b.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                new updateTwitterStatus().execute();

            }
        });

    }

    class updateTwitterStatus extends AsyncTask<Void, Void, String> {

        @Override
        protected String doInBackground(Void... params) {
            String testStatus = "prova tweet ";

            ConfigurationBuilder cb = new ConfigurationBuilder();

            cb.setDebugEnabled(true)
                    .setOAuthConsumerKey("******")
                    .setOAuthConsumerSecret(
                            "*******");

            try {
                TwitterFactory tf = new TwitterFactory(cb.build());
                twitter = tf.getInstance();
                Log.i("bauu", "miao");
                requestToken = twitter.getOAuthRequestToken(CALLBACK_URL);
                String authUrl = requestToken.getAuthenticationURL();

                startActivity(new Intent(Intent.ACTION_VIEW,
                    Uri.parse(requestToken.getAuthenticationURL())));


                return authUrl;

            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(String s) {


        }

    }

    @Override
    public void onResume() {
        super.onResume();
        Uri uri = this.getIntent().getData();
        Log.i("callback funziona", "ciao");
        if (uri != null && uri.toString().startsWith(CALLBACK_URL)) {
            final String verifier = uri.getQueryParameter("oauth_verifier");

            // c 
            try { // the next line is the error's line
                AccessToken acc = twitter.getOAuthAccessToken(requestToken,
                        verifier);
            } catch (TwitterException e) {

                e.printStackTrace();
            }



        }
    }
4

1 に答える 1

1

Twitterユーザーがボタンをクリックした後にのみインスタンスを作成しますonResume()が、等しいメソッドでそれを操作しようとしますnull。このようなエラーを回避するために、アクティビティのライフサイクルについてお読みください https://developer.android.com/reference/android/app/Activity.html

于 2013-04-14T15:38:26.403 に答える