2016-03-22 34 views
0

私は3つのタブ/フラグメントを持つアクティビティを持っています。そのうちの1つにボタンクリックで開くdatepickerが追加されました。日付ピッカーは動作しますが、変更後のデータを自動的に読み込むために、選択した日付をフラグメントクラスに戻す方法については混乱していますか?Android - フラグメント/タブ上のdatepickerから値を取得する

私はonDateSetのようなものが必要ですが、私のボタンをクリックしている部分のクラスにあります。

可能な場合は、アドバイスしてください感謝:

Fragment1/Tab1を:BTNクリックで

は、日付ピッカーを開きます。

public void onClick(View v) { 
     switch (v.getId()){ 
      case R.id.bFromDate: 
       DialogFragment picker = new DatePickerFragment(); 
       picker.show(getActivity().getFragmentManager(), "datePicker"); 
       break; 

     } 
    } 

DatePickerFragment:

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

// 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 month, int day) { 
     Calendar c = Calendar.getInstance(); 
     c.set(year, month, day); 

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

はありがとう..

答えて

1
インスタンス化しているときには、目的の断片を設定することができ

あなたDialogFragment -

DialogFragment picker = new DatePickerFragment(); 
picker.setTargetFragment(this, <request_code>); // any number 
picker.show(getActivity().getFragmentManager(), "datePicker"); 

そして、あなたのDialogFragmentあなたが呼び出すフラグメントに戻ってデータを送信したい時はいつでも、

Intent intent = new Intent(); 
intent.putStringExtra("key_date", formattedDate); 
getTargetFragment().onActivityResult(getTargetRequestCode(), <request_code>, intent); 

そして、あなたの受信フラグメントでは、実装でDialogFragmentからデータを受信するには、onActivityResult()を入力します。

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // Make sure fragment codes match up 
    if (requestCode == <request_code>) { 


     String date = data.getStringExtra("key_date"); 
... 
} 
関連する問題