2013-05-27 6 views
18

* Я пытаюсь динамически добавлять элементы в список. Но, я получаю исключение времени выполнения. Пожалуйста, помогите. Есть ли проблема с глобальными переменными «значения»? я пытался отладить печатая журналы и я могу видеть значение, хранящееся в переменном *java.lang.RuntimeException: Не удалось запустить Activity ComponentInfo: java.lang.NullPointerException: storage == null

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) 

ответ

29

Данное исключение ("storage == null") отбрасываются, когда параметр массива, переданный в ArrayAdapter(Context, int, T[]), равен null. (Чтобы быть более точным, он выброшен из Arrays.java, когда он пытается создать новый ArrayList обернуты вокруг пустого массива.)

Там не должно быть никаких проблем с самой переменной values, но вы абсолютно уверены, что values является не null в точке, в которой вы передаете его в конструктор ArrayAdapter? Чуть ниже линии

//Log.i("User Name",uname); 

и чуть выше вызова конструктора, добавить что-то вроде этого:

Log.i("FriendsActivity", "values = <<" + values + ">>"); 

и посмотреть, если это действительно то, что это должно быть.

+1

Это должен быть принятый ответ – Nactus

Смежные вопросы