2017-08-03 37 views
0

DatePickerを実装したfragmentdialogから、通常のフラグメントにデータを送信しようとしています。私はインターフェイスを使ってこれをやっています。 エラーが発生していて、何が間違っているのかわかりません。エラーは、onClickメソッドのsetDatePickerEventsで「解決できません」です。Android - DialogFragmentからFragmentへのデータ

FirstFragment

public class FirstFragment extends Fragment implements 
    DateFragment.DatePickerEvent { 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.fragment_first, container, false); 

    EditText date= (EditText) rootView.findViewById(R.id.datePicker); 
    date.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      DialogFragment picker = new DatePickerFragment(); 
      picker.setDatePickerEvents(FirstFragment.this); 
      picker.show(getFragmentManager(), "datePicker"); 
     } 

    }); 
    return rootView; 
} 

@Override 
public void onDateSeletcted(String date) { 
    String sDate= date; 
    EditText dp = (EditText) getView().findViewById(R.id.datePicker); 
    dp.setText(sDate); 
} 
} 

DatePickerFragment:

public class DatePickerFragment extends DialogFragment implements 
DatePickerDialog.OnDateSetListener { 
int year, month, day; 

public interface DatePickerEvent{ 
    void onDateSeletcted(String date); 
} 

DatePickerEvent dpe; 

public void setDatePickerEvents(DatePickerEvent dpe){ 
    this.dpe = dpe; 
} 

@NonNull 
@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 

    Calendar c = Calendar.getInstance(); 
    year = c.get(Calendar.YEAR); 
    month = c.get(Calendar.MONTH); 
    day = c.get(Calendar.DAY_OF_MONTH); 
    return new DatePickerDialog(getActivity(), this, year, month, day); 
} 

@Override 
public void onDateSet(DatePicker datePicker, int i, int i1, int i2) { 
    Calendar c = Calendar.getInstance(); 
    c.set(year, month, day); 

    SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); 
    String formattedDate = sdf.format(c.getTime()); 
    dpe.onDateSeletcted(formattedDate); 

    } 
    } 

答えて

0

あなたのクラスは日付ピッカーと命名されます。 DatePickerFragmentではありません。あなたのonClickで
は、私がこの記事でコードを書いたとき間違いだったああ、

new DatePicker();

+0

にインスタンス化ラインを変更します。これはエラーを解決しません – John

関連する問題