2013-11-20 52 views
0

與子打印機一樣。當我評論listView.setAdapter(adapter);它只是顯示了另一種活動:ListView適配器崩潰活動

這是整個的onCreate:

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

     if (savedInstanceState == null) { 
      getSupportFragmentManager().beginTransaction() 
        .add(R.id.container, new PlaceholderFragment()) 
        .commit(); 
     } 

     klasy = getResources().getStringArray(R.array.klasy); 

     ListView listView = (ListView)findViewById(R.id.lista_klas); 
     adapter = new ArrayAdapter<String>(getApplicationContext(), R.layout.activity_lista__klas); 
     listView.setAdapter(adapter); 
    } 

在這裏,從logcat的日誌當我按下按鈕,啓動此活動:

11-20 13:14:53.085 1494-1780/system_process I/ActivityManager﹕ START {cmp=pl.krasiniak.krachapp_beta/.Lista_Klas} from pid 3975 
11-20 13:14:53.335 3975-3975/pl.krasiniak.krachapp_beta D/AndroidRuntime﹕ Shutting down VM 
11-20 13:14:53.335 3975-3975/pl.krasiniak.krachapp_beta W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x40a521f8) 
11-20 13:14:53.345 3975-3975/pl.krasiniak.krachapp_beta E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{pl.krasiniak.krachapp_beta/pl.krasiniak.krachapp_beta.Lista_Klas}: java.lang.NullPointerException 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2079) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2104) 
      at android.app.ActivityThread.access$600(ActivityThread.java:132) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1157) 
      at android.os.Handler.dispatchMessage(Handler.java:99) 
      at android.os.Looper.loop(Looper.java:137) 
      at android.app.ActivityThread.main(ActivityThread.java:4575) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:511) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556) 
      at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.NullPointerException 
      at pl.krasiniak.krachapp_beta.Lista_Klas.onCreate(Lista_Klas.java:34) 
      at android.app.Activity.performCreate(Activity.java:4465) 
      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2033) 
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2104) 
            at android.app.ActivityThread.access$600(ActivityThread.java:132) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1157) 
            at android.os.Handler.dispatchMessage(Handler.java:99) 
            at android.os.Looper.loop(Looper.java:137) 
            at android.app.ActivityThread.main(ActivityThread.java:4575) 
            at java.lang.reflect.Method.invokeNative(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:511) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556) 
            at dalvik.system.NativeStart.main(Native Method) 
11-20 13:14:53.355 1494-1675/system_process W/ActivityManager﹕ Force finishing activity pl.krasiniak.krachapp_beta/.Lista_Klas 
11-20 13:14:53.355 1494-1675/system_process W/ActivityManager﹕ Force finishing activity pl.krasiniak.krachapp_beta/.MainActivity 
11-20 13:14:53.865 1494-1509/system_process W/ActivityManager﹕ Activity pause timeout for ActivityRecord{40ef3f48 pl.krasiniak.krachapp_beta/.Lista_Klas} 
11-20 13:14:54.065 3215-3215/com.cyanogenmod.trebuchet W/Adreno200-EGLSUB﹕ SetSwapInterval() interval: 0 not set 
11-20 13:14:54.105 1494-1506/system_process I/ActivityManager﹕ No longer want com.android.keychain (pid 3950): hidden #16 
11-20 13:15:04.105 1494-1509/system_process W/ActivityManager﹕ Activity destroy timeout for ActivityRecord{40ebf3c0 pl.krasiniak.krachapp_beta/.MainActivity} 
11-20 13:15:04.105 1494-1509/system_process W/ActivityManager﹕ Activity destroy timeout for ActivityRecord{40ef3f48 pl.krasiniak.krachapp_beta/.Lista_Klas} 

我確定數組不是空的。謝謝你的回答,問候:)

+0

上下文爲空嗎?另一個值? – kai

+0

你忘了在適配器中傳遞「klasy」數組。 :) –

+0

你喜歡這樣嗎===> adapter = new ArrayAdapter (getApplicationContext(),R.layout.activity_lista__klas,klasy); – Hardik

回答

0

的代碼可以是不正確的:

setContentView(R.layout.activity_lista__klas); 

// ... 

ListView listView = (ListView)findViewById(R.id.lista_klas); 
adapter = new ArrayAdapter<String>(getApplicationContext(), R.layout.activity_lista__klas); 

相同的佈局用於兩個內容視圖和陣列適配器。當使用two-argument constructor of ArrayAdapter時,資源ID必須解析爲單個TextViewfindViewById()調用意味着它是一個更復雜的佈局,其中ListView

如果我正確理解你的意圖,做到以下幾點:

  • 確保activity_list__klas包含具有指定ID lista_klas使得findViewById()返回非null一個ListView

  • 將適配器構造函數的佈局資源ID更改爲包含表示您的列表行的單個TextView的資源文件。或者更改爲另一個構造函數重載,該重載允許您在其中映射數組項的位置指定TextView

  • 向適配器提供一些數據以實際顯示某些內容。

+0

這是解決方案!我忘了你的第二點。非常感謝你 :) – wzieba

0

試試這個。添加第三個參數

adapter = new ArrayAdapter<String>(getApplicationContext(),R.layout.activity_lista__klas,klasy); 

如果這不起作用。請粘貼您的佈局文件。

0

我猜你的問題是在這裏:

ListView listView = (ListView)findViewById(R.id.lista_klas); 

檢查是否有這個ID的ListViewlistView不爲空。

此外,當您創建適配器時,您需要傳遞一個包含單個TextView以用於顯示每個列表項目的佈局文件ArrayAdapter。您已通過您在setContentView中使用的相同佈局(我認爲)是您的活動的完整佈局。

+0

也許你是對的,因爲其他解決方案不起作用。我是新的佔位符(我剛剛將Eclipse遷移到Android Studio),我不知道是否將ListView放入fragment_lista_klas.xml中,而不是放在activity_lista_klas.xml中,它會好嗎? – wzieba

+0

對不起,沒有真正理解你的評論。 –