当前位置: 首页 > 面试题库 >

尝试从DatePicker DialogFragment设置EditText的文本

康赞
2023-03-14
问题内容

我只是想从我在网上找到的许多android
datepicker教程之一创建的datepicker对话框中获取日期。一旦选择了文本日期,我似乎在实际检索文本日期的某处出错。我有一个DatePickerFragment类,该类从嵌套在MainActivity活动类内的CreateEvent片段调用。这是DatePicker:

public class DatePickerFragment extends DialogFragment
        implements DatePickerDialog.OnDateSetListener {

    private EditText txtDate;
    @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) {
        txtDate = (EditText)view.findViewById(R.id.txtDate);
        txtDate.setText(day + " " + (month + 1) + " " + year);
    }
}

我知道Attempt to invoke virtual method 'void android.widget.EditText.setText(java.lang.CharSequence) on a null object reference实际尝试设置日期的时间,据我了解,这意味着它实际上无法在我的创建事件片段xml文件中找到edittext元素。

我应该如何从中设置此edittext元素的文本,onDateSet还是必须更改方法?

我以这种方式尝试过,但无济于事。


问题答案:

您需要使用一个 接口 来将数据从datepicker传送到调用者fragment

public interface DateListener {
    void passDate(String date);
}

创建一个名为的 成员变量mListener

private DateListener mListener;

覆盖onAttachonDetach fragment方法:

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    try {
        mListener = (DateListener) activity;
    } catch (ClassCastException e) {
        throw new ClassCastException(activity.toString() + " must implement DateListener");
    }
}

@Override
public void onDetach() {
    super.onDetach();
    mListener = null;
}

接下来,interface调用方中实现它fragment并覆盖passDate方法:

@Override
public void passDate(String date) {
    // Do something with 'date', yourEditText.setText(date) for the example
}

而且您应该很好。



 类似资料:
  • 我正在尝试创建searchdate。我在这里做的是 下面是 所以首先,我打开,它是一个片段。然后单击(编辑文本)后,它将显示(DatePickerFragment)。显示没有问题,也没有错误。 我的问题是,我怎么能设置值后,我选择日期从我的?

  • 我试图从我的SQLite数据库获取我的检查文本视图状态,但它正在崩溃的应用程序。 下面是实现的代码: 它给出了这个错误: java.lang.RuntimeException:无法启动activity ComponentInfo{com.example.WoodlandLoverter/com.example.WoodlandLoverter.levelOneActivity}:android.d

  • 我正在尝试在云中设置Jmeter的主从设置。 我在CLOUD中为主服务器和从服务器做的设置 我在Master中创建了文件,并将其复制到Slave机器上。 我在两台机器上都安装了相同版本的Java和Jeter 我在Master的文件中添加了Slave机器的IP地址 请帮助我,为什么当我试图在云机器中执行jmeter脚本时,会遇到连接超时错误。接收: 拒绝连接到主机:10。XXX . xx . XXX

  • 设定的功能为: 对象是 这是BCinSertService:

  • 我正在开发一个应用程序,我显式地将应用程序的语言环境设置为阿拉伯语。然而,我想收集英语的电话号码。我如何才能将EditText和TextView的语言环境显式地设置为美国英语。 下面是我如何设置应用程序区域设置的。我有一门助手课 在我的活动中,我在中使用这个助手,如下所示: 如何分别为我们设置EditText或TextView的区域设置?

  • 我一直在这里跟随这个教程: Android Studio-导入外部库/JAR