gpt4 book ai didi

android - 如何从 Android 中的 DatePickerDialog 返回日期值?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:40:57 26 4
gpt4 key购买 nike

我是安卓新手。我使用以下指南在 android 中创建了一个日期选择器。 http://developer.android.com/guide/topics/ui/controls/pickers.html

 public  class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener {



StringBuilder sb = new StringBuilder();
public static String date;
@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


sb.append(year);
sb.append('-');
sb.append(month+1);
sb.append('-');
sb.append(day);

date = sb.toString();
System.out.println("The date is "+date);

}

我需要将此日期值 (date = sb.toString()) 返回到我的 MainActivity 。 onDateSet方法无效怎么办?

附加信息 - DatePickerDialog 在 MainActivity 类中触发,但不是通过单击单个按钮。一个按钮旁边会发生几个过程,日期选择器只有在满足特定条件时才会触发。我也不想显示日期值。只想将其退回以进行进一步处理。

感谢任何形式的指导

更改了 onDataset 方法和 justshow()

public void onDateSet(DatePicker view, int year, int month, int day) {

//根据用户选择的日期做一些事情

    sb.append(year);
sb.append('-');
sb.append(month+1);
sb.append('-');
sb.append(day);

date = sb.toString();
MainActivity.newdate=sb.toString();
System.out.println("The date is "+MainActivity.newdate);

} public void justShow(){

System.out.println("The date is "+MainActivity.newdate);

这是主要的相关部分(在第一个回复中建议进行更改后)

    DateToken mydate=new DateToken();
String test=dayvals.get(0);
DialogFragment df=new DatePickerFragment();

if(test.equalsIgnoreCase("day")){


df.show(getSupportFragmentManager(), "DatePik");

}

System.out.println("Date is on Main"+newdate);


DatePickerFragment dpf=new DatePickerFragment();
dpf.justShow();

newdate 是静态 String ,但仍然输出 null。在 MainActivity 和 justShow 方法中。但是在 onDataSet 方法中日期输出正确

最佳答案

  • 您可以在 DatePickerFragment 中创建一个公共(public)方法来返回字符串。
  • 您可以在此类写入的 MainActivity 中有一个静态变量。
  • 您可以使用 SharedPreferences 来存储字符串。

我会选择第一个选项,如果您的应用程序是基本的,这是最简单的。

如您所见,有多种方法可以解决此问题,因此了解用户如何与您的应用交互以及何时需要该日期非常重要。如果您在 MainActivity 中持有对 Fragment 的引用并且您不需要 ASAP 数据,则公共(public)返回方法很好。如果您需要在用户选择日期后立即更改字符串,则静态变量非常有用。最后一种方法很浪费,也是最不推荐的,但没有完成静态“魔法”。

关于android - 如何从 Android 中的 DatePickerDialog 返回日期值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13577272/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com