当前位置: 首页 > 知识库问答 >
问题:

DatePicker的Android onDateSet方法不会在另一个打开的对话框中设置textview的文本

公孙新觉
2023-03-14

我有一个带有textView的对话框窗口,它显示了DatePicker选择的日期。我在这个对话框上还有一个按钮,它打开一个datePicker(片段),让我选择一个日期。但是,当我按ok时,在对话框窗口中不会设置日期textView。但如果我调试它,肯定会有传递日期的信息,问题是它不会在对话框中设置。

onDateSet的代码如下:

@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {

    LayoutInflater inflater = this.getLayoutInflater();
    View view2 = inflater.inflate(R.layout.item_edit, null);

    TextView txtDate = (TextView) view2.findViewById(R.id.txtDate);
    txtDate.setText(year + "/" + month + "/" + dayOfMonth);
}

此代码来自activity主页。

当我调试它时,年、月和月的日期都有正确的值。但是txtdate.settext不起任何作用。

共有1个答案

韩瀚
2023-03-14

@Redzerg我们来这个聚会真的很晚了,首先我们不使用片段来存储我的DatePicker,我们把它放在它自己的XML文件中,根布局是一个垂直的LinearLayout这样它就不会把我们从这个代码中挑选的activity屏幕弄得乱七八糟,我们将把选定的日期发送到另一个activity,我这里的目标是用一个按钮挑选两个日期,然后把日期发送到数据库上的SQL搜索之间,我们使用一个styles来管理样式

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@color/color_lightGray">
    <!--the background sets the color of the calender  -->

    <DatePicker
    android:id="@+id/datePicker"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:calendarViewShown="true"
    android:headerBackground="@color/color_Purple"
    android:theme="@style/DatePickerTheme" />
   </LinearLayout>

    <style name="DatePickerTheme" parent="Theme.AppCompat.Light.Dialog">
    <item name="colorControlActivated">@color/colorAccent</item>
    <item name="android:selectableItemBackgroundBorderless">@color/color_Purple</item>
    <item name="android:textColorPrimary">@color/color_Black</item>
</style>

    public void onMake(View view){

    // custom dialog
    final Dialog dialog = new Dialog(PageOneActivity.this);
    dialog.setContentView(R.layout.datepickerview);
    // the layout datepickerview is a XML file
    dialog.setTitle("");

    DatePicker picker = dialog.findViewById(R.id.datePicker);
    // the id datePicker is a Date Picker widget in its own XML file
    // as referenced above you need this to manage custom styling
    final Calendar c = Calendar.getInstance();
    mYear = c.get(Calendar.YEAR);
    mMonth = c.get(Calendar.MONTH);
    mDay = c.get(Calendar.DAY_OF_MONTH);
    //picker.updateDate(2017, 10, 13);//year month day
    picker.updateDate(mYear, mMonth, mDay);// Keeps Calendar initial view what ever today is!

    //Date today = Calendar.getInstance().getTime();
    //SimpleDateFormat formatter = new SimpleDateFormat("MM"+"-"+"dd"+"-"+"yyyy");
    //String folderName = formatter.format(today);

    System.out.println("Month " + mMonth+1);

    picker.init(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH), new DatePicker.OnDateChangedListener() {
    //picker.init(Integer.valueOf(mMonth),Integer.valueOf(mDay),Integer.valueOf(mYear), new DatePicker.OnDateChangedListener() {
        @Override
        public void onDateChanged(DatePicker picker, int year, int monthOfYear, int dayOfMonth) {

            if (txtDateOne.getText().toString().isEmpty()) {
                System.out.println("I am Not Empty");
                txtDateOne.setText((monthOfYear+1) + "-" + dayOfMonth + "-" + year);
                etFirstDate.setText(String.valueOf(monthOfYear+1 ) + String.valueOf(dayOfMonth) + String.valueOf(year));
                v1 = Long.valueOf(etFirstDate.getText().toString());
                etFirstDate.setText(String.valueOf(v1));
                //got1 = mDay;
                dialog.dismiss();

            } else {

                txtDateTwo.setText((monthOfYear+1 ) + "-" + dayOfMonth + "-" + year);
                etSecondDate.setText(String.valueOf(monthOfYear+1) + String.valueOf(dayOfMonth) + String.valueOf(year));
                v2 = Long.valueOf(etSecondDate.getText().toString());
                //v2 = Long.valueOf(txtDateTwo.getText().toString());
                etSecondDate.setText(String.valueOf(v2));
                dialog.dismiss();


                if (etSecondDate.getText().toString().length() > 0) {
                    if (v2 >= v1) {
                        btnDatePicker.setTextColor(getColor(R.color.color_Purple));
                        btnDatePicker.setEnabled(false);
                        sbstring = "First Date < or = Second Date";
                        Toast.makeText( PageOneActivity.this, "First Date < or = Second Date", Toast.LENGTH_LONG ).show();
                        //showSB();
                        int r = (int) (v2-v1);

                        //txtDateTwo.setText(String.valueOf(r));
                    } else {
                        btnDatePicker.setTextColor(getColor(R.color.color_deepBlue));
                        btnDatePicker.setEnabled(false);
                        sbstring = "First Date > or = Second Date";
                        Toast.makeText( PageOneActivity.this, "First Date > or = Second Date", Toast.LENGTH_LONG ).show();

                        //showSB();
                        //int r = (int) (v1-v2);
                    }
                }
            }
            //mDay=dayOfMonth;
            //mMonth=(month);
            //mYear=year;
        }
    });

    dialog.show();
}

    public void onSend(View view){
    if(etFirstDate.getText().toString().isEmpty() || etSecondDate.getText().toString().isEmpty()){
        Toast.makeText( PageOneActivity.this, "You Need Both Dates\n       PICK A DATE", Toast.LENGTH_LONG ).show();
        return;
    }else {
        Intent send = new Intent(PageOneActivity.this,PageTwoActivity.class);
        send.putExtra("FROM_DATE",v1);
        send.putExtra("TO_DATE",v2);
        startActivity(send);
    }
}
 类似资料:
  • 问题内容: 我有一个在jQuery对话框对象中使用的datepicker。对话框内容的来源使用加载。在对话框中,我创建了一个脚本,该脚本为文本输入创建了一个日期选择器。 当我第一次打开对话框时- 一切都很好,但是如果我关闭它并再次重新打开,则会自动触发日期选择器(并且没有这样的选项)有什么方法可以防止这种情况或我在做什么错? 问题答案: 我遇到了这个确切的问题,仅对tvanfosson的技术进行了

  • 问题内容: 我需要一种解决方案,以在单击时以HTML显示打开文件对话框。单击时,必须打开打开文件对话框。 我不想将输入文件框显示为HTML页面的一部分。它必须显示在单独的对话框中,该对话框不是网页的一部分。 问题答案: 这是一个不错的 它本身就是一个控件。但是div放在上面,并应用CSS样式来获得那种感觉。文件控件的不透明度设置为0,以便在单击div时似乎打开了对话框窗口。

  • 我试图将openFiles()方法的内脏移到actionPerformed()方法中的相应位置,但仍然没有起作用。但是,在另一个人用于不同目的的代码中,showOpenDialog()方法在从actionPerformed方法内部调用的方法中工作。代码如下: 谢谢你的帮助。

  • 我正在使用上传文件。如果用户启动打开文件对话框(使用Uploadify选择文件按钮),则会出现一个窗口,用户可以在其中导航到他的路径并选择应上传的文件。现在,Internet Explorer 不存储路径。如果用户再次单击选择文件按钮,他必须再次导航到所需的文件夹。 我知道用户可以一次上传多个文件,但我被问及是否可以存储路径以供下次使用(例如Firefox的行为)。当然,他可以使用另一个浏览器,但

  • 我使用MFC和对话框创建了两个独立的可执行文件项目。 我是visual studio的新手,所以请给出一些建议。谢谢

  • 我有一个带有的自定义对话框。在我的上,我有一个按钮,当我按下它时,对话框就会显示出来,我可以从中选择日期。我希望选定的日期显示在我的中的上。我的代码如下: 这是我的主上包含的对话框的代码: 我从中获取日、月和年,并使用 在我的片段中,我使用下面的代码调用我的对话框: 当我运行我的应用程序时,我在以下行中得到一个nullPointerException: 我做错了什么?提前致谢