我有一个带有textView的对话窗口,其中显示了datePicker选择的日期。我在这个对话框上也有一个按钮,它打开一个datePicker(片段)并让我选择一个日期。但是,当我按下确定时,日期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);
}
此代码来自主要活动页面。
当我调试它时,年,月和日都具有正确的值。但是txtDate.setText没有做任何事情。
答案 0 :(得分:0)
@RedZerg我们真的迟到了这个派对首先我们不使用Fragment来存储我的DatePicker,我们将它放在自己的XML文件中,其中根布局是一个垂直的LinearLayout,这样它不会混乱我们的活动屏幕从这段代码中挑选将把选定的DATE'发送到另一个Activity我的目标是用一个按钮选择两个日期并发送日期以在DB上进行BETWEEN 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);
}
}