Android:从日期选择器/日期集获取返回值
我的页面上有两个按钮。按下按钮时,日期选择器对话框打开。单击日期选择器的“完成”,我想将我的按钮文本设置为用户选择的日期 我想使用datepicker的一个函数来实现这一点 我的代码:Android:从日期选择器/日期集获取返回值,android,Android,我的页面上有两个按钮。按下按钮时,日期选择器对话框打开。单击日期选择器的“完成”,我想将我的按钮文本设置为用户选择的日期 我想使用datepicker的一个函数来实现这一点 我的代码: final Button fromdate = (Button) dialog.findViewById(R.id.ButtonTripConfigureFrom); fromdate.setOnClickListener(new OnClickListener() {
final Button fromdate = (Button) dialog.findViewById(R.id.ButtonTripConfigureFrom);
fromdate.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
showDialog(0);
fromdate.setText(date);
}
});
final Button tilldate = (Button) dialog.findViewById(R.id.ButtonTripConfigureTo);
tilldate.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
showDialog(0);
tilldate.setText(date);
}
});
protected Dialog onCreateDialog(int id)
{
final Calendar c = Calendar.getInstance();
int myYear = c.get(Calendar.YEAR);
int myMonth = c.get(Calendar.MONTH);
int myDay = c.get(Calendar.DAY_OF_MONTH);
return new DatePickerDialog(this,myDateSetListener,myYear, myMonth, myDay);
}
private DatePickerDialog.OnDateSetListener myDateSetListener = new DatePickerDialog.OnDateSetListener()
{
public void onDateSet(DatePicker view, int year, int month, int day)
{
date = day + "/" + (month+1) +"/"+ year;
}
};
但是,执行此操作时,不会显示用户选择的值。仅当我再次按下按钮时才显示。(在用户按下日期选择器的“完成”之前,正在执行按钮的settext)
我检查过的所有解决方案都表明在dateset函数中进行了修改。但由于我有两个不同的按钮,我不能在dateset函数中使用按钮的settext
是否有任何方法可以通过日期集函数返回值,或者可以通过某种方法将参数传递到日期集,然后在日期集中使用if-then。只有在单击fromdate按钮时,您才更新它。这就是为什么当你再次点击它时它会被更新。。。 要在设置日期时更新它,必须在myDateSetListener.onDateSet中更改其文本,但由于有两个按钮,请在按钮中设置一些值。单击以记住单击了哪个按钮:
mFromdate = (Button) dialog.findViewById(R.id.ButtonTripConfigureFrom);
mFromdate.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
showDialog(0);
mButtonClicked = 0;
}
});
mTilldate = (Button) dialog.findViewById(R.id.ButtonTripConfigureTo);
mTilldate.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
showDialog(0);
mButtonClicked = 1;
}
});
private DatePickerDialog.OnDateSetListener myDateSetListener = new DatePickerDialog.OnDateSetListener()
{
public void onDateSet(DatePicker view, int year, int month, int day)
{
if(mButtonClicked == 0)
mFromdate.setText(day + "/" + (month+1) +"/"+ year);
else if(mButtonClicked == 1)
mTillDate.setText(day + "/" + (month+1) +"/"+ year);
}
};
另外,将类的mFromdate、mTilldate和mbutonclicked字段设置为 到目前为止,我能想到的只有:-
static int buttonClicked;
final Button fromdate = (Button) dialog.findViewById(R.id.ButtonTripConfigureFrom);
fromdate.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
buttonClicked = fromDate.getId();
showDialog(0);
}
});
final Button tilldate = (Button) dialog.findViewById(R.id.ButtonTripConfigureTo);
tilldate.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
buttonClicked = tillDate.getId();
showDialog(0);
}
});
protected Dialog onCreateDialog(int id)
{
final Calendar c = Calendar.getInstance();
int myYear = c.get(Calendar.YEAR);
int myMonth = c.get(Calendar.MONTH);
int myDay = c.get(Calendar.DAY_OF_MONTH);
return new DatePickerDialog(this,myDateSetListener,myYear, myMonth, myDay);
}
private DatePickerDialog.OnDateSetListener myDateSetListener = new DatePickerDialog.OnDateSetListener()
{
public void onDateSet(DatePicker view, int year, int month, int day)
{
date = day + "/" + (month+1) +"/"+ year;
Button btn = (Button) dialog. findViewById(buttonClicked); //assuming the dialog in which the button is a class level variable..
btn.setText(date);
}
};
这绝对可以做到。:)
编辑-我对您的代码所做的是存储了按下的按钮的id。然后从onDateSet()方法中存储的id中检索按钮,并将所选日期设置为该按钮的文本。谢谢您的解决方案。您的解决方案很好,因为它删除了if子句,但它对我不起作用,因为两个按钮在一个对话框内。对话框内表示哪个对话框??你能发个截图什么的吗??