如何将onDateSet方法传递给DialogFragment

时间:2016-01-08 19:19:36

标签: android android-datepicker

我的活动中有一个方法:

// activity.class
private void setDate(int year) {
    view.setText(new StringBuilder().append(year));

}

我需要在调用DatePickerDialog的{​​{1}}时调用此方法:

OnDateSetListener

// DatePickerDialogFragment.class public class DatePickerDialogFragment extends DialogFragment { private DatePickerDialog.OnDateSetListener l = new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(int year) { <activity>.setDate(year) } } } (或者我要求这样做)包含对需要设置的视图的引用。如何在<activity>

中访问它

我尝试过这样的事情:

DialogFragment

但是如何在//activity.class DatePickerDialogFragment frag = new DatePickerDialogFragment(this); 类文件中访问活动的方法?

1 个答案:

答案 0 :(得分:1)

1)创建一个界面并让活动实现它:

interface DataSetter {
 void setDate(int year);
}

 YourActivity extends Activity implements DataSetter {

    public void setDate(int year) {
      textView.setText(year+"");
    }
}        

2.1)

@Override
        public void onDateSet(int year) {
            Activity activity= getActivity();
            if (activity != null && activity instanceof DataSetter) {                       
            (DataSetter)activity.setDate(year)
        }
     }

2.2)或将活动绑定到onAttach中的字段并在之后使用它。