0

我有一個簡單的ListView和ArrayAdapter。但是當android去繪製屏幕時,我每次都會得到一個空指針異常。這裏是堆棧:ListView中的Android空指針異常

Thread [<1> main] (Suspended (exception NullPointerException)) 
    <VM does not provide monitor information> 
    ArrayAdapter.createViewFromResource(int, View, ViewGroup, int) line: 392  
    ArrayAdapter.getView(int, View, ViewGroup) line: 362  
    ListView(AbsListView).obtainView(int, boolean[]) line: 2210 
    ListView.measureHeightOfChildren(int, int, int, int, int) line: 1244  
    ListView.onMeasure(int, int) line: 1155 
    ListView(View).measure(int, int) line: 12775  
    LinearLayout(ViewGroup).measureChildWithMargins(View, int, int, int, int) line: 4709  
    LinearLayout.measureChildBeforeLayout(View, int, int, int, int, int) line: 1385 
    LinearLayout.measureVertical(int, int) line: 670  
    LinearLayout.onMeasure(int, int) line: 563 
    LinearLayout(View).measure(int, int) line: 12775  
    FrameLayout(ViewGroup).measureChildWithMargins(View, int, int, int, int) line: 4709 
    FrameLayout.onMeasure(int, int) line: 293 
    FrameLayout(View).measure(int, int) line: 12775 
    LinearLayout(ViewGroup).measureChildWithMargins(View, int, int, int, int) line: 4709  
    LinearLayout.measureChildBeforeLayout(View, int, int, int, int, int) line: 1385 
    LinearLayout.measureVertical(int, int) line: 670  
    LinearLayout.onMeasure(int, int) line: 563 
    LinearLayout(View).measure(int, int) line: 12775  
    PhoneWindow$DecorView(ViewGroup).measureChildWithMargins(View, int, int, int, int) line: 4709 
    PhoneWindow$DecorView(FrameLayout).onMeasure(int, int) line: 293  
    PhoneWindow$DecorView.onMeasure(int, int) line: 2240  
    PhoneWindow$DecorView(View).measure(int, int) line: 12775 
    ViewRootImpl.performTraversals() line: 1117 
    ViewRootImpl.handleMessage(Message) line: 2505 
    ViewRootImpl(Handler).dispatchMessage(Message) line: 99 
    Looper.loop() line: 137 
    ActivityThread.main(String[]) line: 4514  
    Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method] 
    Method.invoke(Object, Object...) line: 511 
    ZygoteInit$MethodAndArgsCaller.run() line: 790 
    ZygoteInit.main(String[]) line: 557 
    NativeStart.main(String[]) line: not available [native method] 

代碼也很簡單。該XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#0099cc" 
    tools:context=".FullscreenActivity" 
    android:orientation="vertical"> 

    <ListView 
     android:id="@+id/status_view" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 
    </ListView> 

</LinearLayout> 

,代碼:

String test[] = {"Line 1","Line 2"}; 

    ListView status = (ListView) findViewById(R.id.status_view); 
    ArrayAdapter<String> statusList = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,R.id.status_view,test);  
    status.setAdapter(statusList); 

我見過噸認爲這樣做同樣的事情,當他們有一些空的字符串數組大多數人得到這個錯誤的例子在它的指針。正如你所看到的,這裏不是這種情況。任何人都與之前的戰鬥?

+2

你確認NullPointerException異常不稱你的listView變量(狀態)?也許是(ListView)findViewById(R.id.status_view);指令返回null .. – Apperside

回答

1

以下是爲ArrayAdapter您使用官方的Java文檔:

公共ArrayAdapter(上下文的背景下,INT資源,詮釋 textViewResourceId,T []對象)

在API級別1構造函數

上下文當前上下文。

資源包含使用 實例化視圖時佈局文件的資源ID。

textViewResourceId TextView的佈局資源 內的id來進行填充

對象目的在ListView來表示。

所以第二個參數應該是佈局文件,包含列表中的行視圖列表介意你不是列表。佈局應該是列表中的一行......

第三個值應該是作爲第二個參數給出的佈局中的文本視圖的ID,其中列表視圖可以插入存儲在字符串數組中的值。

0

你不應該使用「這」就像你現在的樣子使用,而是使用ActivityName.this ..意味着您「這個」

,如果你的活動是

ActivityName extends Activity { 
之前應該寫活動名稱

}

然後

String test[] = {"Line 1","Line 2"}; 

ListView status = (ListView) findViewById(R.id.status_view); 
ArrayAdapter<String> statusList = new ArrayAdapter<String>(ActivityName.this,android.R.layout.simple_list_item_1,test);  
status.setAdapter(statusList);