Tôi có một hoạt động và tất cả tôi muốn làForce gần khi thay đổi định hướng với mở ngày DialogueFragment
Hoạt động -> OnClick của một số bố trí (Đó có TextView) -> Open datepicker -> bộ giá trị được chọn trong txtvalue
tôi muốn aceess Datepicker Sử dụng DialogFragment with Below Code.
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
}
}
Mã trên Đã hoạt động tốt khi Thiết bị không thay đổi hướng của nó. Nhưng Khi datepicker được hiển thị và thay đổi định hướng tôi đang nhận được lực lượng gần như Dưới
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)
Đây là phương pháp của tôi để gọi DatePickerFragment
public void showDatePickerDialog(View v) {
Log.i("TAG", "Inside showDatePickerDialog");
DialogFragment newFragment = new DatePickerFragment((TextView)v);
newFragment.show(getFragmentManager(), "datePicker");
}
Xin hãy giúp tôi thoát ra khỏi đây. Cảm ơn trước.
Tôi đồng ý. Khi Android xây dựng lại đoạn của bạn, nó gọi hàm tạo mặc định ('public DatePickerFragment() {}') ... Để trích dẫn [tài liệu] (http://developer.android.com/reference/android/app/Fragment.html) "Tất cả các lớp con của Fragment phải bao gồm một constructor trống công khai. Khung thường sẽ tái khởi tạo một lớp phân đoạn khi cần thiết, đặc biệt trong quá trình khôi phục trạng thái, và cần có khả năng tìm ra hàm khởi tạo này để khởi tạo nó." – Sam
@Akos Cz: Tôi biết lý do tại sao tôi nhận được điều này. Tôi muốn khắc phục tình trạng này bằng cách sửa đổi mã này. Bạn có thể giúp tôi làm cách nào tôi có thể chuyển id văn bản này sang phân đoạn không? –