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

DatePicker的Android onDateSet方法不会在另一个打开的对话框中设置textview的文本,android,datepicker,android-datepicker,Android,Datepicker,Android Datepicker,我有一个带有文本视图的对话框窗口,显示datePicker选择的日期。我在这个对话框上还有一个按钮,可以打开一个日期选择器(片段),让我选择一个日期。但是,当我按ok时,对话框窗口中不会设置日期文本视图。但是如果我调试它,肯定会有传递日期的信息,问题是它不会在对话框中设置 onDateSet的代码如下所示: @Override public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { La

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

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);
}
此代码来自主活动页面


当我调试这个时,年、月和dayofmonth都有正确的值。但是txtDate.setText没有任何作用。

@RedZerg我们这次聚会真的迟到了。首先,我们不使用片段来存储我的日期选择器。我们将它放在自己的XML文件中,其中根布局是一个垂直的线性布局,这样它就不会扰乱我们从中选择的活动屏幕。代码会将所选日期发送到另一个活动我的目标是用一个按钮选择两个日期,并将日期发送到数据库上的SQL搜索之间。我们使用样式管理样式

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

@颜色/颜色重音
@颜色/紫色
@颜色/颜色/黑色
Make上的公共void(视图){
//自定义对话框
最终对话框=新建对话框(PageOneActivity.this);
setContentView(R.layout.datepickerview);
//布局datepickerview是一个XML文件
对话框.setTitle(“”);
DatePicker-picker=dialog.findViewById(R.id.DatePicker);
//id datePicker是它自己的XML文件中的一个日期选择器小部件
//如上所述,管理自定义样式时需要此选项
最终日历c=Calendar.getInstance();
mYear=c.get(日历年);
mMonth=c.get(日历月);
mDay=c.get(日历,月的第天);
//picker.updateDate(2017,10,13);//年-月-日
updateDate(mYear,mmoth,mDay);//保持日历的初始视图,无论今天是什么!
//Date today=Calendar.getInstance().getTime();
//SimpleDataFormat格式化程序=新的SimpleDataFormat(“MM”+“-”+“dd”+“-”+“yyyy”);
//String folderName=formatter.format(今天);
系统输出打印项次(“月”+月+1);
picker.init(c.get(Calendar.YEAR)、c.get(Calendar.MONTH)、c.get(Calendar.DAY\u OF\u MONTH)、new DatePicker.OnDateChangedListener(){
//init(Integer.valueOf(mMonth)、Integer.valueOf(mDay)、Integer.valueOf(mYear)、new DatePicker.OnDateChangedListener(){
@凌驾
公共无效onDateChanged(日期选取器选取器,整数年,整数月,整数月){
if(txtDateOne.getText().toString().isEmpty()){
System.out.println(“我不是空的”);
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.dismise();
}否则{
txtDateTwo.setText((monthOfYear+1)+“-”+月日+“-”+年);
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.dismise();
如果(etSecondDate.getText().toString().length()>0){
如果(v2>=v1){
btnDatePicker.setTextColor(getColor(R.color.color_Purple));
btnDatePicker.setEnabled(false);
sbstring=“第一个日期<或=第二个日期”;
Toast.makeText(PageOneActivity.this,“第一个日期<或=第二个日期”,Toast.LENGTH\u LONG.show();
//showSB();
int r=(int)(v2-v1);
//txtDateTwo.setText(String.valueOf(r));
}否则{
btnDatePicker.setTextColor(getColor(R.color.color_深蓝));
btnDatePicker.setEnabled(false);
sbstring=“第一个日期>或=第二个日期”;
Toast.makeText(PageOneActivity.this,“第一个日期>或=第二个日期”,Toast.LENGTH\u LONG.show();
//showSB();
//int r=(int)(v1-v2);
}
}
}
//mDay=月的第几天;
//Ammonth=(月);
//迈耶=年;
}
});
dialog.show();
}
公共void onSend(视图){
if(etFirstDate.getText().toString().isEmpty()| | etSecondDate.getText().toString().isEmpty()){
Toast.makeText(PageOneActivity.this,“您需要两个日期\n选择一个日期”,Toast.LENGTH\u LONG.show();
返回;
}否则{
意向发送=新意向(PageOneActivity.this,PageTwoActivity.class);
send.putExtra(“自日期起”,v1);
发送。额外发送(“截止日期”,v2);
星触觉(send);
}
}