Ich habe eine separate Datepicker-Klasse, die ich von innerhalb meiner MainActivity aufrufen.Aufruf einer Methode nach einem Datum ist ausgewählt
public void showDateDialog(View v){
DateDialog dialog= new DateDialog(findViewById(R.id.textView));
FragmentTransaction ft=getFragmentManager().beginTransaction();
dialog.show(ft, "DatePicker");
Was Sie mag würde zu tun ist, um, nachdem der Benutzer ihr Datum gewählt und gedrückt ok, prüfen Sie, ob das ausgewählte Datum eine Zeichenfolge in SharedPreferences zugewiesen hat. Ich habe eine Methode dafür in meinem MainActivity erstellt:
public void checkHours(){
SharedPreferences sharedPref = getSharedPreferences("savedHours", Context.MODE_PRIVATE);
String date = textView.getText().toString();
if (sharedPref.contains(date)) {
textView2.setText(sharedPref.getString(date, ""));
}
}
Das Datum Zeichenfolge ist die, die ich aus dem Datepicker haben. Ich versuche, dies zu rufen aus meiner DateDialog Klasse:
public void onDateSet (DatePicker view, int year, int month, int day){
String date=year+"-"+month+"-"+day;
textView.setText(date);
MainActivity.checkHours();
}
Aber ich bin immer der Fehler „Nicht-statische Methode kann nicht von einem statischen Kontext verwiesen werden“. Gibt es irgendeine Möglichkeit, dass ich checkHours() von DateDialog aus verwenden kann, wenn nicht, wie sonst kann ich es tun?
DateDialog Klasse:
public class DateDialog extends DialogFragment implements DatePickerDialog.OnDateSetListener {
TextView textView;
TextView textView2;
public DateDialog(View view){
textView=(TextView)view;
}
public Dialog onCreateDialog(Bundle savedInstanceState){
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){
String date=year+"-"+month+"-"+day;
textView.setText(date);
MainActivity.checkHours();
}
}
Die 'onDateSet' Bedürfnisse Verfahren einen Verweis auf die' Activity' Instanz. Bitte fügen Sie Code für die Klasse mit dieser Methode ein. –
Sorry, ich bin mir nicht sicher, was du damit meinst? – Masy
Wenn möglich, können Sie den Code für die Klasse "DateDialog" hinzufügen? –