Android 4と私のダイアログフラグメントに問題があります。私はDialogs
を開くことができますが、私はNullPointerException
を得るたびにダイアログをキャンセルするか、それを送信します。 5または6のような新しいAndroidのバージョンでは、すべてがうまくいきます。 それはとても迷惑です。なぜgoogleなのか???私は複数の日を検索し、いくつかの事をテストしましたが、私はこれを動作させることができません。アンドロイド4 - ダイアログフラグメント - NullPointer例外
public class BirthdatePickerDialogFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
//region Variables
//Listener Object
private BirthdatePickerDialogFragment.OnCompleteBabyBirthdateListener setDateListener;
Context sourceActivityContext = null;
//endregion
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
String savedBirthdateString = SharedPreferenceHelper.getSharedPreferenceString(sourceActivityContext,SharedPreferenceHelper.Birthdate,"");
int year = 0;
int month = 0;
int day = 0;
if(savedBirthdateString != "")
{
String[] splitBirthdateString = savedBirthdateString.split("\\.");
int strYear = Integer.parseInt(splitBirthdateString[2]);
int strMonth = (Integer.parseInt(splitBirthdateString[1])) - 1 ;
int strDay = Integer.parseInt(splitBirthdateString[0]);
Calendar c = Calendar.getInstance();
c.set(strYear,strMonth,strDay);
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);
}
else{
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);
}
// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
String strYear = String.valueOf(year);
String strDayOfMonth = String.valueOf(dayOfMonth);
String strMonth = String.valueOf(month + 1);
setDateListener.onCompleteBirthDatePicker(MessageFormat.format("{0}.{1}.{2}", strDayOfMonth, strMonth, strYear));
}
public static interface OnCompleteBabyBirthdateListener {
public abstract void onCompleteBirthDatePicker(String babyBirthDate);
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
try {
this.setDateListener = (BirthdatePickerDialogFragment.OnCompleteBabyBirthdateListener)context;
this.sourceActivityContext = context;
}
catch (final ClassCastException e) {
throw new ClassCastException(context.toString() + " must implement OnCompleteListener");
}
}
}
これは、誕生日のダイアログです。それは開かれますが、私が提出またはキャンセルすると例外がスローされます。 誰かが私を助けてくれることを願っています。 EXCEPTIONLOG:
E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NullPointerException
at com.jalbmagic.test.Dialogs.BirthdatePickerDialogFragment.onDateSet(BirthdatePickerDialogFragment.java:93)
at android.app.DatePickerDialog.tryNotifyDateSet(DatePickerDialog.java:148)
at android.app.DatePickerDialog.onStop(DatePickerDialog.java:155)
at android.app.Dialog.dismissDialog(Dialog.java:326)
at android.app.Dialog.dismiss(Dialog.java:302)
at android.app.Dialog.cancel(Dialog.java:1104)
at android.app.Dialog.onTouchEvent(Dialog.java:617)
at android.app.Dialog.dispatchTouchEvent(Dialog.java:739)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1873)
at android.view.View.dispatchPointerEvent(View.java:7307)
at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3174)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3119)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4155)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4134)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4226)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:171)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:125)
at android.os.Looper.loop(Looper.java:124)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
私たちはあなたのコンソールを共有します – ziLk
正確に何が起きているのかが分かるようにログを投稿できますか?また、これが返ってくるかどうかを確認するためにデバッグすることができます: 'savedBirthdateString'? –
私の更新されたコードを確認してください –