的DatePicker不会显示选择
问题描述:
我试图做出带走一些东西片段后日期:的DatePicker不会显示选择
日期
重量
身高
注
现在我被datePicker卡住了。 我设法让对话框出现,但当我选择一个日期强制关闭应用程序。 我希望它拿我选的日期,并显示在此标签
:试图寻找着其他的问题,但没有人帮我DD/MM/YY
。 希望你能:) 这里的片段:
public class NewTracker extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.newtracker, container, false);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
getActivity().setTitle("מעקב חדש");
EditText dateSelect = (EditText)getView().findViewById(R.id.dateSelect);
dateSelect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogFragment picker = new DatePickerFragment();
picker.show(getFragmentManager(), "datePicker");
}
});
}
}
下面是日期选择片段:
以下是错误日志。后
Error:
04-26 15:12:47.022 14245-14245/com.example.matancohen.sg50 E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.matancohen.sg50, PID: 14245
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
at com.example.matancohen.sg50.DatePickerFragment.onDateSet(DatePickerFragment.java:40)
at android.app.DatePickerDialog.onClick(DatePickerDialog.java:171)
at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:175)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6692)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)
错误日志艾哈迈德的解决方案:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.matancohen.sg50, PID: 23173
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
at com.example.matancohen.sg50.NewTracker.<init>(NewTracker.java:43)
at com.example.matancohen.sg50.Tracking$1.onClick(Tracking.java:41)
at android.view.View.performClick(View.java:6207)
at android.view.View$PerformClick.run(View.java:23639)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6692)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)
当我选择它给了我力量崩溃 我能做些什么日期后点击OK? 谢谢!
答
你可以尝试任何的方法有两种:
- 将您的片段里面你
public class DatePickerFragment extends DialogFragment
类的实现..NewTracker
修改代码以:
public class NewTracker extends Fragment {
public static EditText dateSelect;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.newtracker, container, false);
dateSelect = (EditText) v.findViewById(R.id.dateSelect);
dateSelect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogFragment picker = new DatePickerFragment();
picker.show(getFragmentManager(), "datePicker");
}
});
return v;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
getActivity().setTitle("מעקב חדש");
}
public static class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener {
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
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);
// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
public void onDateSet(DatePicker view, int year, int month, int day) {
Calendar c = Calendar.getInstance();
c.set(year, month, day);
String myFormat = "dd/MM/yy"; //In which you need put here
SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);
dateSelect.setText(sdf.format(c.getTime()));
}
}
}
- 在您的
DialogFragment
中使用interface
来通知t他在选择日期后调用fragment
。
你能发表错误日志吗? –
'getView()。findViewById(R.id.dateSelect);'你的DatePickerDialog必须包含'R.id.dateSelect'这种方式。它有吗? –
你得到一个nullpointerexception,因为在你的DatePickerDialog中没有'R.id.dateSelect'我认为 –