我的页面上有两个按钮。按下按钮时,将打开dater picker对话框。单击DONE of date picker时,我想将我的按钮文本设置为用户选择的日期。
我想使用datepicker的单个函数来执行此操作。
我的代码:
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正在用户按下DOUND of datepicker之前执行)
我检查的所有解决方案都表明在dateset功能中进行了修改。但由于我有两个不同的按钮,我不能在dateset函数中使用按钮的settext。
是否有任何方法可以通过日期设置函数返回值,或者将参数传递给dateset的方式,然后在ifset内使用if。
答案 0 :(得分:1)
您只有在点击它时才更新fromdate Button。这就是为什么当你再次点击它时它会更新... 要在设置日期时更新它,您必须在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和mButtonclicked字段;)
答案 1 :(得分:0)
我现在所能想到的只有: -
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中检索按钮,并将所选日期设置为该Button的文本..