2015-12-27 87 views
0

我知道有很多这样的问题,但每个答案都是这样的:你缺少setContentView()。ListView - findviewbyid返回null

这是我的Java代码:

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

    invoices = new PendingInvoices().getListInvoices(); 
    fillList(); 
} 

private void fillList() { 
    ListAdapter dataAdapter = new PendingInvoiceAdapter(this, R.layout.pending_invoice_row, invoices); 
    ListView listView = (ListView) findViewById(R.id.invoice_list_view); 
    listView.setAdapter(dataAdapter); 
} 

每次它NullPointerExceptionlistView.setAdapter(dataAdapter);停止。

正如你所看到的,我有setContentView()onCreate方法。

我activity_pending_invoice有名称invoice_list_view的ListView:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<ListView 
    android:id="@+id/invoice_list_view" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/dark_gray" 
    /> 

</LinearLayout> 

pending_invoice_row只是LinearLayout一个Textview

有谁知道什么是错?这就像一场噩梦!

+0

你有没有检查过你的dataAdapter? – tdmsoares

+0

@tdmsoares你是什么意思?如果dataAdapter不为null?我在调试时分割错误行(在第二行使用'(dataAdapter);'并且错误消息总是出现在'listView.setAdapter' – kristyna

+1

后发出异常的完整堆栈跟踪 – Blackbelt

回答

0

对于那些谁都会有同样的问题:

检查堆栈跟踪,你可能会发现这条线:

Caused by: java.lang.NullPointerException 
11-29 20:26:28.327: E/AndroidRuntime(786): at android.widget.ArrayAdapter.getCount(ArrayAdapter.java:330). 

这意味着List要传递到ListAdapter为空。

我不知道为什么安卓显示listView为空,但我很高兴,现在工程:)征求意见,以我的问题


谢谢,它帮助了很多。并感谢this question and answer