首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.lang.NullPointerException android和jtwitter

java.lang.NullPointerException android和jtwitter
EN

Stack Overflow用户
提问于 2012-05-19 21:18:17
回答 1查看 801关注 0票数 0

我正在尝试使用android应用程序从yamba提取时间线,但每当我运行该程序时都会失败,并显示以下错误:

代码语言:javascript
复制
04-15 15:58:18.578: E/AndroidRuntime(5418): FATAL EXCEPTION: Thread-171
04-15 15:58:18.578: E/AndroidRuntime(5418): java.lang.NullPointerException
04-15 15:58:18.578: E/AndroidRuntime(5418):     at com.example.yamba.UpdaterService$1.run(UpdaterService.java:32)

代码是这样的:

代码语言:javascript
复制
package com.example.yamba;
import java.util.List;

import winterwell.jtwitter.Twitter;
import winterwell.jtwitter.Twitter.Status;
import winterwell.jtwitter.TwitterException;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;

public class UpdaterService extends Service{
    static final String TAG = "UpdaterService";
    static final int DELAY = 30; //seconden
    Twitter twitter;

    @Override
    public void onCreate() {
        super.onCreate();
        Twitter twitter = new Twitter("student", "password");
        twitter.setAPIRootUrl("http://yamba.marakana.com/api");
        Log.d(TAG, "onCreated");
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        new Thread() {
            public void run() {
                try {
                    while(true) {
                        List<Status> timeline = twitter.getPublicTimeline();

                    for (Status status : timeline) {
                        Log.d(TAG, String.format("%s: %s", status.user.name,
                                status.text));
                        }

                        Thread.sleep(DELAY*1000);
                    }

                } catch (TwitterException e) {
                    Log.e(TAG, "Failed because of network error.", e);
                } catch (InterruptedException e) {
                    Log.d(TAG, "Updater interrupted", e);
                }
            }
        }.start();

        Log.d(TAG, "onStarted");
        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.d(TAG, "onDestroyed");
    }


    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}

其中第32行是:List<Status> timeline = twitter.getPublicTimeline();

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-19 21:23:52

onCreate方法中初始化Twitter的本地实例,以便类成员保持为空。

而不是

代码语言:javascript
复制
Twitter twitter = new Twitter("student", "password");

它应该是

代码语言:javascript
复制
twitter = new Twitter("student", "password");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10665502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档