【发布时间】:2015-12-29 00:13:32
【问题描述】:
我知道有很多这样的问题,但每个答案都是这样的:你缺少 setContentView()。
这是我的 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);
}
每次它在listView.setAdapter(dataAdapter); 上以NullPointerException 停止。
如您所见,我在onCreate 方法上有setContentView()。
我的 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
有人知道怎么回事吗?这就像一场噩梦!
【问题讨论】:
-
你检查过你的dataAdapter吗?
-
@tdmsoares 你什么意思?如果 dataAdapter 不为空?我在调试时拆分错误行(在第二行使用
(dataAdapter);)并且错误消息始终出现在listView.setAdapter -
发布异常的完整堆栈跟踪
-
这段代码看起来是正确的。而设置适配器上的
NullPointerException只能表示找不到ListView。我建议删除项目的 Build 文件夹并清理重建它(并从 Emulator/Phone 中删除旧应用程序)。附:invoice_list_view的根LinearLayout可以转换为FrameLayout,内部只有ListView -
@Blackbelt 谢谢你的评论。在复制日志消息时,我发现了它无法正常工作的原因。