0
2つのスピナー(spinner_month
とspinner_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);
<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>
私はそれを実行すると、私は次のエラーを取得する次のように私のcalender_view.xmlがある:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method void android.widget.Spinner.setAdapter(android.widget.SpinnerAdapter) on a null object reference
ので、「これはですが、スピナーのオブジェクトはnull
ですが、私はなぜそれがわかりません。私が紛失しているものはありますか?
この答えは、すべてのコードで試してみてください。なぜこの答えが問題を解決するのかについていくつかの説明を追加することを検討してください。 – RedBassett
を提案通りに - 私はLayoutInflaterを追加してから、 'calender_view'を膨らませて、同じものをアダプタに割り当てました。 これは完璧に機能しました! – Vivek
初めて 'builder.show'を呼び出すとうまくいきます。それ以降の呼び出しは 'java.lang.IllegalStateExceptionで失敗する:指定された子は既に親を持っている' だから私は 'onCreate()の間に作成できるものではなく、 'を呼び出し、単にbuilder.show()を呼び出すとより効率的になります – Vivek