1

我有一个名为 MainActivity 的活动。MainActivity 内部是一个名为 Select 的按钮。单击时Select,它应该启动一个自定义对话框。自定义对话框又具有一个 listView 作为子项。如果我在没有 listView 的情况下测试我的自定义对话框,它工作正常。但是对于 listView,膨胀的 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
4

1 回答 1

2

我现在可以看到你的问题了。您在启动对话框的 Activity 上调用您的 findViewById(...) ,而不是在对话框本身上。

以下是如何正确创建自定义对话框,然后初始化其视图的示例:

    // 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();
于 2013-08-08T22:22:38.727 回答