プログラミングを始めて2か月程度の初心者です。
いろいろと足りない部分、的外れな部分あるかもしれませんが、よろしくお願いいたします。
前提・実現したいこと
fragmentから呼び出されるDatePickerDialogについて”日付”を隠した状態で表示させたい。
(上記ダイアログから取得した年、月のみ後続で使用するため)
発生している問題・エラーメッセージ
下記ページを参考に実装しましたが、肝心のDatePickerDialogの日付を隠す処理でエラー<エラー内容抜粋参照>が発生しています。
参考ページ:http://hakobera.hatenablog.com/entry/2013/12/16/235423
<エラー内容抜粋>
※日付部品自体が見つからないというエラーとの認識ですが、解決方法が見つかりません。
2019-05-20 11:41:37.909 24208-24208/jp.co.apps.workout.myapplication E/AndroidRuntime: FATAL EXCEPTION: main Process: jp.co.apps.workout.myapplication, PID: 24208 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setVisibility(int)' on a null object reference at jp.co.apps.workout.myapplication.GraphFragment$3.onClick(GraphFragment.java:174)
該当のソースコード
Java
1 2graphDate.setOnClickListener(new View.OnClickListener() { 3 @Override 4 public void onClick(View v) { 5 6DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(), android.R.style.Theme_Holo_Light,new DatePickerDialog.OnDateSetListener() { 7 8 @Override 9 public void onDateSet(DatePicker view, int yyyy, int mm, int day) { 10 11 LineData data = getData(selectKey,yyyy,mm); 12 setupChart(charts[0], data, colors[0 % colors.length]); 13 14 graphDate = (TextView)getView().findViewById(R.id.graphDate); 15 graphDate.setText(String.valueOf(yyyy)+"年"+String.valueOf(mm+1)+"月"); 16 17 //日付設定 18 cal.set(yyyy,mm,1,0,0,0); 19 20 year = cal.get(Calendar.YEAR); 21 month = cal.get(Calendar.MONTH); 22 23 } 24 }, cal.get(Calendar.YEAR),cal.get(Calendar.MONTH),cal.get(Calendar.DATE)); 25 26//DatePickerDialogの日付パーツのリソースIDを取得 27 int dayId = datePickerDialog.getDatePicker().getResources().getIdentifier("day", "id", "android"); 28//DatePickerDialogの日付パーツに対して、スペースを詰めてパーツ非表示を設定。 29 **datePickerDialog.findViewById(dayId).setVisibility(View.GONE); ←ここでエラー発生** 30 31 datePickerDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.argb(250,220,220,220))); 32 datePickerDialog.show(); //DatePickerDialogを表示する 33 34 } 35 });
※DatePickerDialogのパーツ非表示のため、findViewById(dayId)のレイアウト割愛。
(分からないため…)
試したこと
エラー発生個所をコメントアウトすれば、エラーは解消することを確認。
dayId及び、View.GONEのみを切りだし、戻り値がnullとならないことを確認。
datePickerDialog.findViewById(dayId).setVisibility(View.GONE)のdatePickerDialog部分をいくつか変更(頭にView.を付けるなど)して試してみましたが、ダメでした。
解決方法、アドバイスなどを頂けると幸甚です。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー