Android DialogFragment 回传数据

采用自定义接口的方式回传数据


一、软件截图:






二、代码:

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 + "日"));
    }
}


发布了34 篇原创文章 · 获赞 12 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/hfrommane/article/details/52188869