FindViewById返回NULL滚动视图

时间:2014-05-21 16:02:57

标签: android xml view scroll null

我正在开发一个Android应用程序,我遇到了这个问题。我想在滚动视图中动态添加复选框,该视图将显示在对话框中。 问题是在浏览此表达式ScrollView layout = (ScrollView) findViewById(R.layout.custom);

时布局为空

这是功能。

private void openCustomMenu() {
        // TODO Auto-generated method stub


        ScrollView layout = (ScrollView) findViewById(R.layout.custom);
        layout.removeAllViews();
        for (String name : StopNames){
            CheckBox checkbox = new CheckBox(this);
            checkbox.setText(name);
            checkbox.setTextColor(getResources().getColor(R.color.white));
            layout.addView(checkbox);
        }

        final Dialog dialog = new Dialog(this);
        dialog.setContentView(layout);
        dialog.setTitle("Bus Stops");
    }

这是我的xml文件。

  <?xml version="1.0" encoding="utf-8"?>
    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/custom"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

    </ScrollView>

Thank you for you help !

编辑:新XML

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

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:id="@+id/custom">

        </LinearLayout>


</ScrollView>

和新功能。

private void openCustomMenu() {




final Dialog dialog = new Dialog(this);
        dialog.setContentView(R.layout.custom);
        dialog.setTitle("Bus Stops");

        LinearLayout layout = (LinearLayout) dialog.findViewById(R.id.custom);      
        layout.removeAllViews();
        for (String name : StopNames){
            CheckBox checkbox = new CheckBox(this);
            checkbox.setText(name);
            checkbox.setTextColor(getResources().getColor(R.color.white));
            layout.addView(checkbox);
        }



    }

1 个答案:

答案 0 :(得分:0)

findViewById(R.layout.custom);更改为findViewById(R.id.custom);,因此在您的代码中,请执行以下操作:

 ScrollView layout = (ScrollView) findViewById(R.id.custom);

您正试图从id而不是layouts获取ids