* リストビューにアイテムを動的に追加しようとしていますが、実行時例外が発生します。助けてください。グローバル変数「値」に問題がありますか?ログを出力してデバッグしようとしました。変数に格納されている値を確認できます*
public class FriendsActivity extends ListFragment implements TabListener {
private Fragment mFragment;
private String[] values;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActivity().setContentView(R.layout.activity_friends);
}
@SuppressWarnings("deprecation")
public void onActivityCreated(Bundle savedInstanceState) {
setHasOptionsMenu(true);
super.onActivityCreated(savedInstanceState);
String su = User.getLoggedInUsername();
friends.query(friends.class, new StackMobQuery().field(new StackMobQueryField("uname").isEqualTo(su)), new StackMobQueryCallback<friends>(){
@Override
public void failure(StackMobException arg0) {
// TODO Auto-generated method stub
}
public void success(List<friends> arg0) {
// TODO Auto-generated method stub
if(arg0.size()>0){
FriendsActivity.this.values = new String[arg0.size()];
for(int i=0;i<arg0.size();i++){
friends us = arg0.get(i);
values[i] = us.getUname();
}
for(int i=0;i<values.length;i++)
Log.i("Friends",values[i]);
}
else{
values = new String[]{"xyz","abc","dbz"};
}
}
});
//String uname=User.getLoggedInUsername();
//Log.i("User Name",uname);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
Android.R.layout.simple_list_item_1, values);
setListAdapter(adapter);
}
これがエラーリストです
05-27 16:42:03.667: E/Trace(814): error opening trace file: No such file or directory (2)
05-27 16:46:17.718: E/AndroidRuntime(814): FATAL EXCEPTION: main
05-27 16:46:17.718: E/AndroidRuntime(814): Java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myapp.cloudchat/com.myapp.cloudchat.HomeScreenActivity}: Java.lang.NullPointerException: storage == null
05-27 16:46:17.718: E/AndroidRuntime(814): at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2180)
05-27 16:46:17.718: E/AndroidRuntime(814): at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2230)
05-27 16:46:17.718: E/AndroidRuntime(814): at Android.app.ActivityThread.access$600(ActivityThread.Java:141)
05-27 16:46:17.718: E/AndroidRuntime(814): at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1234)
05-27 16:46:17.718: E/AndroidRuntime(814): at Android.os.Handler.dispatchMessage(Handler.Java:99)
05-27 16:46:17.718: E/AndroidRuntime(814): at Android.os.Looper.loop(Looper.Java:137)
05-27 16:46:17.718: E/AndroidRuntime(814): at Android.app.ActivityThread.main(ActivityThread.Java:5041)
05-27 16:46:17.718: E/AndroidRuntime(814): at Java.lang.reflect.Method.invokeNative(Native Method)
05-27 16:46:17.718: E/AndroidRuntime(814): at Java.lang.reflect.Method.invoke(Method.Java:511)
05-27 16:46:17.718: E/AndroidRuntime(814): at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:793)
05-27 16:46:17.718: E/AndroidRuntime(814): at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:560)
05-27 16:46:17.718: E/AndroidRuntime(814): at dalvik.system.NativeStart.main(Native Method)
05-27 16:46:17.718: E/AndroidRuntime(814): Caused by: Java.lang.NullPointerException: storage == null
05-27 16:46:17.718: E/AndroidRuntime(814): at Java.util.Arrays$ArrayList.<init>(Arrays.Java:38)
05-27 16:46:17.718: E/AndroidRuntime(814): at Java.util.Arrays.asList(Arrays.Java:154)
05-27 16:46:17.718: E/AndroidRuntime(814): at Android.widget.ArrayAdapter.<init>(ArrayAdapter.Java:128)
05-27 16:46:17.718: E/AndroidRuntime(814): at com.myapp.cloudchat.FriendsActivity.onActivityCreated(FriendsActivity.Java:74)
05-27 16:46:17.718: E/AndroidRuntime(814): at Android.app.Fragment.performActivityCreated(Fragment.Java:1703)
05-27 16:46:17.718: E/AndroidRuntime(814): at Android.app.FragmentManagerImpl.moveToState(FragmentManager.Java:903)
05-27 16:46:17.718: E/AndroidRuntime(814): at Android.app.FragmentManagerImpl.moveToState(FragmentManager.Java:1057)
05-27 16:46:17.718: E/AndroidRuntime(814): at Android.app.BackStackRecord.run(BackStackRecord.Java:682)
05-27 16:46:17.718: E/AndroidRuntime(814): at Android.app.FragmentManagerImpl.execPendingActions(FragmentManager.Java:1435)
05-27 16:46:17.718: E/AndroidRuntime(814): at Android.app.Activity.performStart(Activity.Java:5113)
05-27 16:46:17.718: E/AndroidRuntime(814): at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2153)
05-27 16:46:17.718: E/AndroidRuntime(814): ... 11 more
05-27 16:46:20.428: E/Trace(866): error opening trace file: No such file or directory (2)
この特定の例外(_"storage == null"
_)は、ArrayAdapter(Context, int, T[])
に渡された配列パラメーターがnullの場合にスローされます。 (より具体的には、null配列にラップされた新しいArrayList
を作成しようとすると、Arrays.Javaからスローされます。)
変数values
自体に問題はないはずですが、values
コンストラクターに渡す時点でArrayAdapter
がnullではないことを絶対に確信していますか?境界線のすぐ下
_ //Log.i("User Name",uname);
_
コンストラクター呼び出しのすぐ上に、次のようなものを追加します。
_ Log.i("FriendsActivity", "values = <<" + values + ">>");
_
それが本当に本来あるべき姿であるかどうかを確認してください。