2017-02-09 4 views
-2

Ich versuche, ausgewählten Datumswert auf den Editiertext zu setzen. Ich erhalte folgende FehlerFehler beim Setzen von Edittext-Wert von außerhalb der Klasse

java.lang.NullPointerException: Der Versuch, auf ein Null-Objekt Referenz

public static class AddDataFragment extends BaseFragment implements { 
@BindView(R.id.tvStartVisit) 
    public TextView tvStartVisit; 

@Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment_add_visit, container, false); 
     ButterKnife.bind(this, view); 
     setData(); 
     return view; 
    } 

@OnClick(R.id.tvStartVisit) 
    public void onStartVisitDateClicked(){ 
     DialogFragment newDialogFragment = new DatePickerFragment(); 
     newDialogFragment.show(getActivity().getSupportFragmentManager(), "datePicker"); 
    } 

    public static class DatePickerFragment extends DialogFragment 
      implements DatePickerDialog.OnDateSetListener { 

     @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); 

      return new DatePickerDialog(getActivity(), this, year, month, day); 
     } 

     public void onDateSet(DatePicker view, int year, int month, int day) { 
      AddVisitFragment mAddVisitFragmentForDatePicker = new AddDataFragment(); 
      mAddVisitFragmentForDatePicker.tvStartVisit.setText(year+"-"+month+"-"+day); 
     } 
    } 
} 

Antwort

0
virtuelle Methode 'Leere android.widget.TextView.setText (java.lang.CharSequence)' aufzurufen

Changed

static TextView tvStartVisit; 


    public void onDateSet(DatePicker view, int year, int month, int day) { 

     tvStartVisit.setText(year+"-"+month+"-"+day); 
    } 
0

Sie, dass Textview Objekt im Dialog-Methode übergeben kann.

public static class AddDataFragment extends BaseFragment implements { 
     @BindView(R.id.tvStartVisit) 
     public TextView tvStartVisit; 

     @OnClick(R.id.tvStartVisit) 
     public void onStartVisitDateClicked(){ 
      DialogFragment newDialogFragment = new DatePickerFragment(tvStartVisit); 
      newDialogFragment.show(getActivity().getSupportFragmentManager(), "datePicker"); 
     } 

     public static class DatePickerFragment extends DialogFragment 
       implements DatePickerDialog.OnDateSetListener { 

      TextView tvStartVisit; 
      DatePickerFragment(TextView tvStartVisit) { 
       this.tvStartVisit = tvStartVisit; 
      } 

      @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); 

       return new DatePickerDialog(getActivity(), this, year, month, day); 
      } 

      public void onDateSet(DatePicker view, int year, int month, int day) { 
       AddVisitFragment mAddVisitFragmentForDatePicker = new AddDataFragment(); 
       tvStartVisit.setText(year+"-"+month+"-"+day); 
      } 
     } 
    } 
+0

Erste Fehler bei DatePickerFragment (Textview tvStartVisit) { this.tvStartVisit = tvStartVisit; } –

0

Es ist, weil tvStartVisitnull ist. Sie haben die View nicht gebunden.

In onCreateDialog stellen Sie sicher, dass Sie ButterKnife.bind(this, view); aufrufen (oder die Bind-Methode für Ihre Bibliothek).

Oder Sie könnten Ihr Datum übergeben, bevor die TextView erstellt wurde.

0

Versuchen Sie, diese

public static class AddDataFragment extends BaseFragment 
        implements DatePickerDialog.OnDateSetListener { 
@BindView(R.id.tvStartVisit) 
public TextView tvStartVisit; 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_add_visit, container, false); 
    ButterKnife.bind(this, view); 
    setData(); 
    return view; 
} 

@OnClick(R.id.tvStartVisit) 
public void onStartVisitDateClicked(){ 
    DialogFragment newDialogFragment = new DatePickerFragment(AddDataFragment.this); 
    newDialogFragment.show(getActivity().getSupportFragmentManager(), "datePicker"); 
} 

public static class DatePickerFragment extends DialogFragment { 
    DatePickerDialog.OnDateSetListener listener 
    public DatePickerFragment(DatePickerDialog.OnDateSetListener listener) { 
    this.listener = listerner; 
    } 
    @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); 

     return new DatePickerDialog(getActivity(), listener, year, month, day); 
    } 
} 

@Override 
public void onDateSet(DatePicker view, int year, int month, int day) { 
     tvStartVisit.setText(year+"-"+month+"-"+day); 
    } 
} 
+0

Kein Fehler bei DialogFragment newDialogFragment = new DatePickerFragment (AddDataFragment.this); –

+0

geben Sie die Details des Fehlers – arjun

Verwandte Themen