मैं एक गतिविधि है और सभी मैं चाहता हूँबलपूर्वक बंद करें जब खुले दिनांक DialogueFragment साथ अभिविन्यास परिवर्तन
गतिविधि है -> कुछ लेआउट करें OnClick (यह TextView है) -> ओपन Datepicker -> सेट txtvalue
में चयनित मान नीचे कोड के साथ डायलॉग फ्रैगमेंट का उपयोग करके डेटपिकर को मिस करना चाहते हैं।
package com.app.ourforms.date;
import java.util.Calendar;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.os.Bundle;
import android.util.Log;
import android.widget.DatePicker;
import android.widget.TextView;
public class DatePickerFragment extends DialogFragment implements
DatePickerDialog.OnDateSetListener {
TextView txt;
public DatePickerFragment() {
}
public DatePickerFragment(TextView txt) {
this.txt = txt;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceSateate) {
Log.i("TAG", "Inside onCreateDialog");
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
return new DatePickerDialog(getActivity(), this, year, month, day);
}
public void onDateSet(DatePicker view, int year, int month, int day) {
Log.i("TAG", "Inside onDateSet");
txt.setText(day + "/" + (month + 1) + "/" + year);
// Do something with the date chosen
}
}
ऊपर कोड ठीक काम करता है जब डिवाइस अपना अभिविन्यास नहीं बदलता है। लेकिन जब Datepicker दिखाया गया है और अभिविन्यास परिवर्तन मैं करीब बल मिल रहा है नीचे
01-04 07:34:14.580: E/AndroidRuntime(2375): FATAL EXCEPTION: main
01-04 07:34:14.580: E/AndroidRuntime(2375): java.lang.NullPointerException
01-04 07:34:14.580: E/AndroidRuntime(2375): at com.app.ourforms.date.DatePickerFragment.onDateSet(DatePickerFragment.java:39)
01-04 07:34:14.580: E/AndroidRuntime(2375): at android.app.DatePickerDialog.tryNotifyDateSet(DatePickerDialog.java:148)
01-04 07:34:14.580: E/AndroidRuntime(2375): at android.app.DatePickerDialog.onClick(DatePickerDialog.java:116)
01-04 07:34:14.580: E/AndroidRuntime(2375): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166)
01-04 07:34:14.580: E/AndroidRuntime(2375): at android.os.Handler.dispatchMessage(Handler.java:99)
01-04 07:34:14.580: E/AndroidRuntime(2375): at android.os.Looper.loop(Looper.java:137)
01-04 07:34:14.580: E/AndroidRuntime(2375): at android.app.ActivityThread.main(ActivityThread.java:5039)
01-04 07:34:14.580: E/AndroidRuntime(2375): at java.lang.reflect.Method.invokeNative(Native Method)
01-04 07:34:14.580: E/AndroidRuntime(2375): at java.lang.reflect.Method.invoke(Method.java:511)
01-04 07:34:14.580: E/AndroidRuntime(2375): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
01-04 07:34:14.580: E/AndroidRuntime(2375): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
01-04 07:34:14.580: E/AndroidRuntime(2375): at dalvik.system.NativeStart.main(Native Method)
के रूप में यहाँ DatePickerFragment
बुलाpublic void showDatePickerDialog(View v) {
Log.i("TAG", "Inside showDatePickerDialog");
DialogFragment newFragment = new DatePickerFragment((TextView)v);
newFragment.show(getFragmentManager(), "datePicker");
}
कृपया मुझे इस से बाहर निकलना करने के लिए मदद के लिए मेरे विधि है। अग्रिम में धन्यवाद।
मैं सहमत हूं। जब एंड्रॉइड आपके टुकड़े को पुनर्निर्माण करता है तो यह डिफ़ॉल्ट कन्स्ट्रक्टर ('सार्वजनिक डेटपिकरफ्रैगमेंट() {}') कहता है ... [दस्तावेज़ीकरण] उद्धृत करने के लिए (http://developer.android.com/reference/android/app/Fragment.html) , "टुकड़े के सभी उप-वर्गों में एक सार्वजनिक खाली कन्स्ट्रक्टर शामिल होना चाहिए। विशेष रूप से राज्य पुनर्स्थापना के दौरान ढांचे को एक खंड वर्ग को फिर से चालू कर दिया जाएगा, और इसे तुरंत स्थापित करने के लिए इस कन्स्ट्रक्टर को खोजने में सक्षम होना चाहिए।" – Sam
@ एकोस सीज़: मुझे पता था कि मुझे यह क्यों मिल रहा है। मैं इस कोड को संशोधित करके इस स्थिति को दूर करना चाहता हूं। क्या आप मेरी मदद कर सकते हैं कि मैं इस टेक्स्टव्यू आईडी को खंड में कैसे पारित कर सकता हूं? –