Android日期选择器和按钮问题

Android日期选择器和按钮问题,android,button,android-fragments,datepicker,Android,Button,Android Fragments,Datepicker,我试图让一个日期选择器对话框显示,当用户点击一个按钮,上面写着设置你的生日,我需要的是按钮,然后显示用户的选择回到按钮。我用TextView尝试了这个网站上列出的一些解决方案,但都没有用。日期选择器显示得很好,但我无法在按钮上显示数据。我尝试过以下解决方案: 这是我的密码: 首先是DatePickerFragment: 公共类DatePickerFragment扩展DialogFragment实现DatePickerDialog.OnDateSetListener{ TheListener li

我试图让一个日期选择器对话框显示,当用户点击一个按钮,上面写着设置你的生日,我需要的是按钮,然后显示用户的选择回到按钮。我用TextView尝试了这个网站上列出的一些解决方案,但都没有用。日期选择器显示得很好,但我无法在按钮上显示数据。我尝试过以下解决方案:

这是我的密码:

首先是DatePickerFragment:

公共类DatePickerFragment扩展DialogFragment实现DatePickerDialog.OnDateSetListener{

TheListener listener;

public interface TheListener {
    public void returnDate(String date);
}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

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

    return new DatePickerDialog(getActivity(), this, year, month, day);
}

@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
    Calendar c = Calendar.getInstance();
    c.set(year, monthOfYear, dayOfMonth);

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

    if (listener != null) {
        listener.returnDate(formattedDate);
    }
}
private Button btnBirthday;

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

    View view = inflater.inflate(R.layout.fragment_signup, container, false);

    return view;
}

@Override
public void onResume() {
    super.onResume();

    btnBirthday = (Button) getActivity().findViewById(R.id.signup_birthday_button);
    btnBirthday.setText("Set your birthday");
    btnBirthday.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            DialogFragment picker = new DatePickerFragment();
            picker.show(getFragmentManager(), "datePicker");
        }
    });
}

@Override
public void returnDate(String date) {
    btnBirthday.setText(date);
}
}

现在,调用它的片段:

公共类SignUpFragment扩展片段实现MyBirth.TheListener{

TheListener listener;

public interface TheListener {
    public void returnDate(String date);
}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

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

    return new DatePickerDialog(getActivity(), this, year, month, day);
}

@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
    Calendar c = Calendar.getInstance();
    c.set(year, monthOfYear, dayOfMonth);

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

    if (listener != null) {
        listener.returnDate(formattedDate);
    }
}
private Button btnBirthday;

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

    View view = inflater.inflate(R.layout.fragment_signup, container, false);

    return view;
}

@Override
public void onResume() {
    super.onResume();

    btnBirthday = (Button) getActivity().findViewById(R.id.signup_birthday_button);
    btnBirthday.setText("Set your birthday");
    btnBirthday.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            DialogFragment picker = new DatePickerFragment();
            picker.show(getFragmentManager(), "datePicker");
        }
    });
}

@Override
public void returnDate(String date) {
    btnBirthday.setText(date);
}
}

我们将非常感谢您的任何帮助。如果这是一个重复的问题,我很抱歉,但我无法找到一种方法使我的程序以我希望的方式运行。我在这里找不到解决办法


提前谢谢。

试试这个。这将向您展示如何在textview中呈现信息,但您也可以将其转换为按钮。您可以在上找到完整的源代码