我正在尝试创建一个带有两个微调器(spinner_month
和spinner_year
)的自定义对话框。
为了获得指导,我采用了Google开发指南中提供的示例。
主活动代码:
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.NullPointer异常:尝试调用虚拟 方法无效 android.widget.Spinner.setAdapter(android.widget.SpinnerAdapter) on a 空对象引用
这是因为"微调器"对象是null
,但我不确定为什么。我错过了什么吗?
试试这个
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);