私はTwitter4Jライブラリを使用しており、次のようにサービスを呼び出すためにいくつかの非同期タスクを実装しようとしています。
public class TweetsActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_post_tweet);
new getFollowers().execute();
}
@SuppressWarnings("unused")
private class getFollowers extends AsyncTask<String,Void,List<String>>
{
@Override
protected List<String> doInBackground(String... arg0) {
List<String> friends = null;
Twitter t = ((TwitterApplication)getApplication()).getTwitter();
try {
IDs names = t.getFollowersIDs("jd_biggestboss");
for(int i:names.getIDs())
{
friends.add(t.showUser(i).getScreenName());
}
return friends;
} catch (TwitterException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}// TODO Auto-generated method stub
return null;
}
protected void onPostExecute(List<String> result) {
for(String name:result)
System.out.println(name);
}
}
}
エラーが発生します。これはスタックトレースです。UIスレッドなどからUI要素にアクセスしていないことを確認しました。では、何が問題を引き起こしているのでしょうか?APIに対して行う各呼び出しは、個別の非同期タスクで行う必要があるのでしょうか?前もって感謝します。
01-27 02:22:58.042: W/dalvikvm(30528): threadid=11: thread exiting with uncaught exception (group=0x40ab0a08)
01-27 02:22:58.052: E/AndroidRuntime(30528): FATAL EXCEPTION: AsyncTask #1
01-27 02:22:58.052: E/AndroidRuntime(30528): java.lang.RuntimeException: An error occured while executing doInBackground()
01-27 02:22:58.052: E/AndroidRuntime(30528): at android.os.AsyncTask$3.done(AsyncTask.java:278)
01-27 02:22:58.052: E/AndroidRuntime(30528): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
01-27 02:22:58.052: E/AndroidRuntime(30528): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
01-27 02:22:58.052: E/AndroidRuntime(30528): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
01-27 02:22:58.052: E/AndroidRuntime(30528): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
01-27 02:22:58.052: E/AndroidRuntime(30528): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
01-27 02:22:58.052: E/AndroidRuntime(30528): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
01-27 02:22:58.052: E/AndroidRuntime(30528): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
01-27 02:22:58.052: E/AndroidRuntime(30528): at java.lang.Thread.run(Thread.java:864)
01-27 02:22:58.052: E/AndroidRuntime(30528): Caused by: java.lang.NullPointerException
01-27 02:22:58.052: E/AndroidRuntime(30528): at com.tmm.android.twitter.TweetsActivity$getFollowers.doInBackground(TweetsActivity.java:40)
01-27 02:22:58.052: E/AndroidRuntime(30528): at com.tmm.android.twitter.TweetsActivity$getFollowers.doInBackground(TweetsActivity.java:1)
01-27 02:22:58.052: E/AndroidRuntime(30528): at android.os.AsyncTask$2.call(AsyncTask.java:264)
01-27 02:22:58.052: E/AndroidRuntime(30528): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
01-27 02:22:58.052: E/AndroidRuntime(30528): ... 5 more