的DatePicker不会显示选择

的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? 谢谢!

+0

你能发表错误日志吗? –

+0

'getView()。findViewById(R.id.dateSelect);'你的DatePickerDialog必须包含'R.id.dateSelect'这种方式。它有吗? –

+0

你得到一个nullpointerexception,因为在你的DatePickerDialog中没有'R.id.dateSelect'我认为 –

你可以尝试任何的方法有两种:

  1. 将您的片段里面你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())); 
     } 
    } 
} 
  1. 在您的DialogFragment中使用interface来通知t他在选择日期后调用fragment
启动=“2”>
+0

试过第一个,现在当我尝试去NewTracker它的力量关闭 –

+0

错误日志说什么? – rafsanahmad007

+0

太长..在哪里发布? –