gpt4 book ai didi

android - 在 android 中验证 "from date"和 "to date"

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:38:12 25 4
gpt4 key购买 nike

我是一个应用程序,用户必须在其中选择两个日期,即 from dateto date。这两个字段不应接受任何小于当前日期的日期。I浏览了本网站的一些帖子,并通过使用单个日期选择器对话框和单个 ondatesetListener 实现了此功能。

我的问题是我无法验证 to date 应该始终大于或等于 from date 的条件。请帮助我。我无法捕获开始日期,因为 Activity 日期被 Activity 结束日期覆盖 在此先感谢。以下是代码:

public class Leave_form extends Activity 
{
private static EditText tvDislpayResult;
private Button startPickDate;
private Button endPickDate;
private Calendar startDate;
private Calendar endDate;
//private EditText startDateDisplay;
//private EditText endDateDisplay;
static final int DATE_DIALOG_ID = 0;
private TextView startDateDisplay;
private TextView endDateDisplay;
private TextView activeDateDisplay;
private Calendar activeDate;
private Calendar currentDate;
private Calendar fromDate;

protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_leave_form);

/* capture our View elements for the start date function */
startDateDisplay = (EditText) findViewById(R.id.e_from_date);
startPickDate = (Button) findViewById(R.id.Set_date1);

/*get tday date */

currentDate=Calendar.getInstance();
Log.d("currentDate ",""+(currentDate.get(Calendar.DAY_OF_MONTH))+(currentDate.get(Calendar.MONTH)+1)+(currentDate.get(Calendar.YEAR)));

/* get the current date */
startDate = Calendar.getInstance();
Log.d("startdate ",""+(startDate.get(Calendar.DAY_OF_MONTH))+(startDate.get(Calendar.MONTH)+1)+(startDate.get(Calendar.YEAR)));

/* add a click listener to the button */
startPickDate.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
showDateDialog(startDateDisplay, startDate);
Log.d("startDate-on click ",""+(startDate.get(Calendar.DAY_OF_MONTH))+(startDate.get(Calendar.MONTH)+1)+(startDate.get(Calendar.YEAR)));

}
});

/* capture our View elements for the end date function */
endDateDisplay = (EditText) findViewById(R.id.e_to_date);
endPickDate = (Button) findViewById(R.id.Set_date2);

/* get the current date */
endDate = Calendar.getInstance();
Log.d("endDate ",""+(endDate.get(Calendar.DAY_OF_MONTH))+(endDate.get(Calendar.MONTH)+1)+(endDate.get(Calendar.YEAR)));

/* add a click listener to the button */
endPickDate.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
showDateDialog(endDateDisplay, endDate);
Log.d("endDate -on click",""+(endDate.get(Calendar.DAY_OF_MONTH))+(endDate.get(Calendar.MONTH)+1)+(endDate.get(Calendar.YEAR)));
}
});

/* display the current date (this method is below) */
// updateDisplay(startDateDisplay, startDate);
// updateDisplay(endDateDisplay, endDate);
}

private void updateDisplay(TextView dateDisplay, Calendar date)
{
dateDisplay.setText(
new StringBuilder()
// Month is 0 based so add 1
.append(date.get(Calendar.DAY_OF_MONTH) ).append("-")
.append(date.get(Calendar.MONTH)+1).append("-")
.append(date.get(Calendar.YEAR)).append(" "));

Log.d("msg","date:"+(date.get(Calendar.DAY_OF_MONTH))+(date.get(Calendar.MONTH)+1)+(date.get(Calendar.YEAR)));

fromDate=date;
}

public void showDateDialog(TextView dateDisplay, Calendar date)
{
Log.d("SDD", dateDisplay.getText().toString());
Log.d("startdate ",""+(currentDate.get(Calendar.DAY_OF_MONTH))+(currentDate.get(Calendar.MONTH)+1)+(currentDate.get(Calendar.YEAR)));
activeDateDisplay = dateDisplay;
activeDate = date;
showDialog(DATE_DIALOG_ID);
}

private OnDateSetListener dateSetListener = new OnDateSetListener()
{
@SuppressWarnings("deprecation")
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
activeDate.set(Calendar.YEAR, year);
activeDate.set(Calendar.MONTH, monthOfYear);
activeDate.set(Calendar.DAY_OF_MONTH, dayOfMonth);
Log.d("activeDate-on dateset ",""+(activeDate.get(Calendar.DAY_OF_MONTH))+(activeDate.get(Calendar.MONTH)+1)+(activeDate.get(Calendar.YEAR)));

if(currentDate.after(activeDate)|(currentDate.equals(activeDate)))
{
Toast toast=Toast.makeText(Leave_form.this, "Please select a valid date", Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();


}
else
{
if((currentDate.after(activeDate)|(currentDate.equals(activeDate)))&&(startDateDisplay.getText().toString()!=null))
{
Log.d("startDate-on click ",""+(startDate.get(Calendar.DAY_OF_MONTH))+(startDate.get(Calendar.MONTH)+1)+(startDate.get(Calendar.YEAR)));
if(startDate.before(activeDate))
{
updateDisplay(activeDateDisplay, activeDate);
}

else
{
Toast.makeText(getApplicationContext(), "enter valid date", Toast.LENGTH_SHORT).show();
/*AlertDialog alertDialog=new AlertDialog.Builder(Leave_form.this).create();

alertDialog.setMessage("Choose a valid date");

alertDialog.setButton("OK", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub

}
});
alertDialog.show();*/
}
}
else
{
updateDisplay(activeDateDisplay, activeDate);
}

}

unregisterDateDisplay();
}
};

private void unregisterDateDisplay()
{
Log.d("startdate ",""+(currentDate.get(Calendar.DAY_OF_MONTH))+(currentDate.get(Calendar.MONTH)+1)+(currentDate.get(Calendar.YEAR)));
Log.d("from date:","-"+activeDate.DAY_OF_MONTH+activeDate.MONTH+activeDate.YEAR);
activeDateDisplay = null;
activeDate = null;
}

@Override
protected Dialog onCreateDialog(int id) {
switch (id) {

case DATE_DIALOG_ID:
Log.d("fromdate","msg");
Log.d("id",""+DATE_DIALOG_ID);
return new DatePickerDialog(this, dateSetListener, activeDate.get(Calendar.YEAR), activeDate.get(Calendar.MONTH), activeDate.get(Calendar.DAY_OF_MONTH));
}
return null;
}

@Override
protected void onPrepareDialog(int id, Dialog dialog) {
super.onPrepareDialog(id, dialog);
switch (id) {
case DATE_DIALOG_ID:
Log.d("id",""+DATE_DIALOG_ID);
((DatePickerDialog) dialog).updateDate(activeDate.get(Calendar.YEAR), activeDate.get(Calendar.MONTH), activeDate.get(Calendar.DAY_OF_MONTH));
break;
}
}

public void leave(View view)
{
Intent intent1=new Intent(this,Rough.class);
setContentView(R.layout.activity_rough);
startActivity(intent1);
}
public void logout(View view)
{
Intent intent2=new Intent (this,MainActivity.class);
setContentView(R.layout.activity_main);
startActivity(intent2);
}
}

最佳答案

最好改成这样的代码:

if((currentDate.after(activeDate)|(currentDate.equals(activeDate)))&&(startDateDisplay.getText().toString()!=null))

多个 if block ,例如:

if((currentDate.after(activeDate)||(currentDate.equals(activeDate))
if(!startDateDisplay.getText().toString().equals(null))

仔细注意差异!

也看看这个 answer here

关于android - 在 android 中验证 "from date"和 "to date",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15834544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com