采用自定义接口的方式回传数据
一、软件截图:
二、代码:
1、定义DatePickerFragment,自定义的接口OnDateInputListener
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
public OnDateInputListener onDateInputListener;
public interface OnDateInputListener {
void getDate(int year, int month, int day);
}
public void setOnDateInputListener(OnDateInputListener onDateInputListener) {
this.onDateInputListener = onDateInputListener;
}
@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);
}
public void onDateSet(DatePicker view, int year, int month, int day) {
// Do something with the date chosen by the user
onDateInputListener.getDate(year, month + 1, day);
}
}
2、采用lambda表达式实现接口
public class MainActivity extends AppCompatActivity {
private TextView textViewData;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textViewData= (TextView) findViewById(R.id.tv_date);
}
public void showDatePickerDialog(View v) {
DatePickerFragment newFragment = new DatePickerFragment();
newFragment.show(getSupportFragmentManager(), "datePicker");
newFragment.setOnDateInputListener((int year, int month, int day) -> textViewData.setText(year + "年 " + month + "月 " + day + "日"));
}
}