2014-02-07 40 views
0

當我添加行list.add(sb.toString());程序停止工作。
當我刪除它的數據加載到StringBuilder,但我無法顯示它。
我搜索了一個解決方案,但每個代碼示例都是一樣的。
我找不到問題。Android。當我嘗試將項目添加到ArrayList時,爲什麼會出現錯誤?

public ArrayList<String> list; 
public ArrayAdapter<String> adapter; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_contact_list); 

    listView = (ListView) findViewById(R.id.contactList); 
    // listView.setOnItemClickListener(this); 

    Cursor phones = getContentResolver().query(
      ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, 
      null, null); 
    while (phones.moveToNext()) { 

     String name = phones 
       .getString(phones 
         .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); 

     String phoneNumber = phones 
       .getString(phones 
         .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
     StringBuilder sb = new StringBuilder(); 

     sb.append(name).append(" ").append(phoneNumber); 

     list.add(sb.toString()); 
     Log.d("Added:", sb.toString()); 

    } 
    adapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, list); 
    listView.setAdapter(adapter); 

    phones.close(); 

堆棧跟蹤:

02-05 10:41:03.505: E/AndroidRuntime(29762): FATAL EXCEPTION: main 
02-05 10:41:03.505: E/AndroidRuntime(29762): java.lang.NullPointerException 
02-05 10:41:03.505: E/AndroidRuntime(29762): at com.example.anewapp.CameraPreview.surfaceCreated(CameraPreview.java:30) 
02-05 10:41:03.505: E/AndroidRuntime(29762): at android.view.SurfaceView.updateWindow(SurfaceView.java:547) 
02-05 10:41:03.505: E/AndroidRuntime(29762): at android.view.SurfaceView.access$000(SurfaceView.java:85) 
02-05 10:41:03.505: E/AndroidRuntime(29762): at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:173) 
02-05 10:41:03.505: E/AndroidRuntime(29762): at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:671) 
02-05 10:41:03.505: E/AndroidRuntime(29762): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1821) 
02-05 10:41:03.505: E/AndroidRuntime(29762): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:999) 
02-05 10:41:03.505: E/AndroidRuntime(29762): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4217) 
02-05 10:41:03.505: E/AndroidRuntime(29762): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725) 
02-05 10:41:03.505: E/AndroidRuntime(29762): at android.view.Choreographer.doCallbacks(Choreographer.java:555) 
02-05 10:41:03.505: E/AndroidRuntime(29762): at android.view.Choreographer.doFrame(Choreographer.java:525) 
02-05 10:41:03.505: E/AndroidRuntime(29762): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711) 
02-05 10:41:03.505: E/AndroidRuntime(29762): at android.os.Handler.handleCallback(Handler.java:615) 
02-05 10:41:03.505: E/AndroidRuntime(29762): at android.os.Handler.dispatchMessage(Handler.java:92) 
02-05 10:41:03.505: E/AndroidRuntime(29762): at android.os.Looper.loop(Looper.java:137) 
02-05 10:41:03.505: E/AndroidRuntime(29762): at android.app.ActivityThread.main(ActivityThread.java:4802) 
02-05 10:41:03.505: E/AndroidRuntime(29762): at java.lang.reflect.Method.invokeNative(Native Method) 
02-05 10:41:03.505: E/AndroidRuntime(29762): at java.lang.reflect.Method.invoke(Method.java:511) 
02-05 10:41:03.505: E/AndroidRuntime(29762): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:813) 
02-05 10:41:03.505: E/AndroidRuntime(29762): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:580) 
02-05 10:41:03.505: E/AndroidRuntime(29762): at dalvik.system.NativeStart.main(Native Method) 
+0

這裏有一個nullpointerexception @ camerapreview.java第30行 – Raghunandan

+5

你在哪裏使用了你的列表,即public ArrayList list,請寫list = new ArrayList ; afert line setContentView(R.layout.activity_contact_list); – theLazyFinder

+1

鹿neeni!你的解決方案几乎可行,但需要list = new ArrayList (); :D謝謝! – user3270899

回答

1

需要初始化列表

list = new ArrayList<String>(); 
0

您展示堆棧回溯是一個空指針異常。 它說你的文件CameraPreview.java 30行解除引用空指針。

看看第30行。瞭解哪個指針爲空,爲什麼。調試代碼,所以當控制通過時,指針正在引用一個對象。

顯然,堆棧回溯沒有與您顯示的onCreate()的任何連接。所以這是另一件事你要工作。你爲什麼認爲它在list.add()中失敗了(或者,你爲什麼顯示錯誤的棧回溯)?

順便說一句,變量「list」初始化的地方在哪裏?

相關問題