2016-06-25 16 views
0

Die Methode setDateListener(DateListener dl) kann nicht aufgelöst werden. Es ist öffentlich und ich verwende es für ein Objekt der Klasse DatePickerFragment.java, in dem die Methode enthalten ist. HierKann Methode nicht auflösen, warum?

ist die onCreateView() Verfahren in dem Fragment, wo die setDateListener() Methode aufgerufen wird:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    mView = inflater.inflate(R.layout.fragment_sign_up_about, container, false); 

    mFirstNameEditText = (EditText) mView.findViewById(R.id.sign_up_first_name_edit_text); 
    mLastNameEditText = (EditText) mView.findViewById(R.id.sign_up_last_name_edit_text); 
    mBirthdayEditText = (EditText) mView.findViewById(R.id.sign_up_birthday_edit_text); 
    mContinueButton = (Button) mView.findViewById(R.id.sign_up_continue_2_button); 

    mBirthdayEditText.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      datePickerFragment = new DatePickerFragment(); 
      datePickerFragment.setDateListener(SignUpAboutFragment.this); 
      datePickerFragment.show(getFragmentManager(), "datePicker"); 

     } 
    }); 
} 

Hier ist die DatePickerFragment.java Klasse (Importe weggelassen worden):

public class DatePickerFragment extends DialogFragment 
     implements DatePickerDialog.OnDateSetListener { 

    private DateListener mCallback; 

    public interface DateListener { 
     void onDateSelected(String formattedDate); 
    } 

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

    @Override 
    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
     Calendar c = Calendar.getInstance(); 
     c.set(year, monthOfYear, dayOfMonth); 

     SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); 
     String formattedDate = sdf.format(c.getTime()); 
     mCallback.onDateSelected(formattedDate); 
    } 

    public void setDateListener(DateListener dateListener) { 
     mCallback = dateListener; 
    } 
} 
+1

haben Sie die Schnittstelle in 'SignUpAboutFragment' implementiert? – Raghunandan

+0

Welcher deklarierte Typ hat 'datePickerFragment'? –

+0

gibt es keine Schnittstelle SignUpAboutFragment. –

Antwort

1

Die Methode setDateListener (DateListener dl) kann nicht aufgelöst werden. Es ist public und ich verwende es für ein Objekt der Klasse DatePickerFragment.java, wo die Methode enthalten ist.

Dies passiert, wenn Sie den Verweis auf den Super-Typ zuweisen. DatePickerFragment ist ein DialogFragment, umgekehrt ein DialogFragment ist kein DatePickerFragment

+1

ok danke, also habe ich gerade den Typ in DatePickerFragment geändert und es hat funktioniert! Cool. =) –

+0

Wenn diese Lösung Ihr Problem gelöst hat, sollten Sie es als akzeptierte Antwort markieren, damit es anderen helfen kann – antonio

Verwandte Themen