我有一项名为MainActivity的活动。 MainActivity内部是一个名为Select的按钮。单击Select
时,应该启动自定义对话框。自定义对话框又将listView作为子项。如果我测试我的自定义对话框没有listView,它工作正常。但是使用listView,膨胀的listView始终为null。如何修复listView?
XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/item_listView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
爪哇
LayoutInflater inflater = getLayoutInflater();
View dialoglayout = inflater.inflate(R.layout.item_linear_listview, null);
Dialog listHolder =
(new Dialog(this, R.style.CustomDialog));
listHolder.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
listHolder.setContentView(dialoglayout);
listHolder.getWindow().setBackgroundDrawable(new ColorDrawable(0));
listHolder.show();
ListView listView = (ListView) findViewById(R.id.item_listView);
//check listView beyond here returns null
答案 0 :(得分:2)
我现在可以看到你的问题。您在启动对话框的Activity上调用findViewById(...),而不是在对话框本身上调用。
以下是如何正确创建customdialog,然后初始化其视图的示例:
// custom dialog
final Dialog dialog = new Dialog(getApplicationContext());
dialog.setContentView(R.layout.item_linear_listview); // your custom layout file
dialog.setTitle("Title...");
// set the custom dialog components - for example the list view
ListView list = (ListView) dialog.findViewById(R.id.item_listView);
dialog.show();