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);