创建自定义对话框时出错

时间:2017-02-02 08:24:55

标签: android android-dialog

我正在尝试创建一个包含两个微调器(spinner_monthspinner_year)的自定义对话框。

为了获得指导,我采用了Google开发指南中提供的示例。

MainActivity代码:

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(R.layout.calender_view);
AlertDialog alertDialog = builder.create();
Spinner spinner = (Spinner) alertDialog.findViewById(R.id.spinner_month);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,R.array.months_array,     android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);

我的calender_view.xml如下

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:app="http://schemas.android.com/apk/res-auto"
          xmlns:tools="http://schemas.android.com/tools"
          android:id="@+id/layout_category"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_weight="1"
          android:orientation="horizontal"
          android:padding="5dp">

    <Spinner
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/spinner_year"
        android:layout_weight="1"/>

    <Spinner
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/spinner_month"
        android:layout_weight="1"
        android:spinnerMode="dialog"/>
</LinearLayout>

当我运行它时,我收到以下错误:

  

引起:java.lang.NullPointerException:尝试调用虚拟   方法无效   android.widget.Spinner.setAdapter(android.widget.SpinnerAdapter)上   null对象引用

这是因为&#39;旋转器&#39;对象是null,但我不确定原因。有什么我想念的吗?

1 个答案:

答案 0 :(得分:1)

试试这个

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    LayoutInflater li = LayoutInflater.from(this);
    View view = li.inflate(R.layout.calender_view, null, false);
    builder.setView(view);
    AlertDialog alertDialog = builder.create();

    Spinner spinner = (Spinner) view.findViewById(R.id.spinner_month);
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,R.array.months_array,     android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);