2015-12-27 91 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