Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Textview仅在领料日期后更新两次_Java_Android_Xml - Fatal编程技术网

Java Textview仅在领料日期后更新两次

Java Textview仅在领料日期后更新两次,java,android,xml,Java,Android,Xml,我在一个对话框中使用了两个文本视图,一个用于from date,另一个用于to date。现在,当我单击“从日期文本视图”时,日期选择器对话框打开,当我在文本视图中选择未更新的日期时,如果我再次打开日期选择器并在文本视图中选择第二次更新日期的日期。任何人都能理解为什么它没有第一次更新吗 public static void datePickerDialog(final Context context) { dialog = new Dialog(context);

我在一个对话框中使用了两个文本视图,一个用于from date,另一个用于to date。现在,当我单击“从日期文本视图”时,日期选择器对话框打开,当我在文本视图中选择未更新的日期时,如果我再次打开日期选择器并在文本视图中选择第二次更新日期的日期。任何人都能理解为什么它没有第一次更新吗

 public static void datePickerDialog(final Context context) {

            dialog = new Dialog(context);
            dialog.setContentView(R.layout.date_picker_dialog);

            fromDateText = dialog.findViewById(R.id.from_date);
            toDateText = dialog.findViewById(R.id.to_date);

            fromDateText.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    datePicker(context);
                }
            });

            toDateText.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    datePicker(context);
                }
            });
            dialog.show();

            fromDateText.setText(fromDate);
            toDateText.setText(toDate);
        }


        public static void datePicker(Context context){

            fromDatePicker = new DatePickerDialog(context, android.R.style.Theme_Holo_Light_Dialog_MinWidth
                    ,fromDateListner, fromDay, fromMonth, fromYear);
            simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy");
            fromDatePicker.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
            fromDatePicker.show();

            fromDateListner = new DatePickerDialog.OnDateSetListener() {
                @Override
                public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
                    month+=1;
                    fromDate = dayOfMonth+"/"+month+"/"+year;
                    setDate();
                }
            };

        }

        private static void setDate() {

            try {
                dateFrom = simpleDateFormat.parse(fromDate);
                dateTo = simpleDateFormat.parse(toDate);
            } catch (ParseException e) {
                e.printStackTrace();
            }

            fromDateText.setText(dateFrom.toString());
            toDateText.setText(dateTo.toString());
        }

你能这样试试吗

    private static void setDate() {

        try {
            dateFrom = simpleDateFormat.parse(fromDate);
            dateTo = simpleDateFormat.parse(toDate);

            fromDateText.setText(dateFrom.toString());
            toDateText.setText(dateTo.toString());
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
//编辑:

检查我的代码:

private void showDatePicker() {
    final Calendar myCalendar = Calendar.getInstance();

    DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker datePicker, int year, int monthOfYear, int dayOfMonth) {
            myCalendar.set(Calendar.YEAR, year);
            myCalendar.set(Calendar.MONTH, monthOfYear);
            myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);

            setDate(myCalendar.getTime());
        }
    };

    if (getActivity() != null) {
        new DatePickerDialog(getActivity(), date, myCalendar
                .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
                myCalendar.get(Calendar.DAY_OF_MONTH)).show();
    }
}

private void setDate(Date time) {
    SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy", Locale.US);
    editText.setText(sdf.format(time));
}
请尝试此代码。。 为所选文本视图获取布尔变量

像这样改变方法

public class DialogActiivty extends AppCompatActivity {
private TextView fromDateText,toDateText;
private String fromDate,toDate;
private Dialog dialog;
private DatePickerDialog fromDatePicker;
private SimpleDateFormat simpleDateFormat;

private Calendar calendar;
private int year, month, day;
private boolean fromSelected=false,toSelected=true;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    datePickerDialog(DialogActiivty.this);
}
public  void datePickerDialog(final Context context) {
    calendar=Calendar.getInstance();
    year = calendar.get(Calendar.YEAR);

    month = calendar.get(Calendar.MONTH);
    day = calendar.get(Calendar.DAY_OF_MONTH);
    dialog = new Dialog(context);

    dialog.setContentView(R.layout.date_picker_dialog);

    fromDateText = dialog.findViewById(R.id.from_date);
    toDateText = dialog.findViewById(R.id.to_date);

    fromDateText.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            toSelected=false;
            fromSelected=true;
            datePicker(context);
        }
    });

    toDateText.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            fromSelected=false;
            toSelected=true;
            datePicker(context);
        }
    });
    dialog.show();

  //        fromDateText.setText(fromDate);
  //        toDateText.setText(toDate);
}


public  void datePicker(Context context){

    fromDatePicker = new DatePickerDialog(context, android.R.style.Theme_Holo_Light_Dialog_MinWidth
            ,fromDateListner, year, month, day);
    simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy");
    fromDatePicker.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
    fromDatePicker.show();


}
DatePickerDialog.OnDateSetListener fromDateListner = new DatePickerDialog.OnDateSetListener() {
    @Override
    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
        month+=1;
        fromDate = dayOfMonth+"/"+month+"/"+year;
        setDate(fromDate);
    }
};
private  void setDate(String fromDate) {
    if (fromSelected) {
        fromDateText.setText(fromDate);
    }
    if (toSelected) {
        toDateText.setText(fromDate);
    }
}
}

fromDateListner
在创建对话框后被初始化,因此第一次创建的
DatePickerDialog
没有侦听器


fromDateListner=new-DatePickerDialog.OnDateSetListener()…
部分移到
fromDatePicker=new-DatePickerDialog之前(上下文…

日期到文本视图是否发生了相同的情况?请尝试此操作为什么要将文本设置两次?在日期选择器对话框中,fromDate和toDate第一次将为空method@meditat我还没有实现dateTo..@AndroidTeam我已经设置了默认日期,因此不会有任何问题。请检查我上面的编辑代码:)如果它不起作用,您在其他地方有问题。