我正在尝试使两个不同的按钮打开日期选择对话框,并将所选日期设置为文本到每个按钮旁边的textView。 我不知道如何区分这些调用,我尝试使用Tag,但在调试时我看到Views标记为null。 这就是我到目前为止所做的:
DatePickerFragment.java:
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
if(view.getTag() == "datePicker1")
{
((TextView)getActivity().findViewById(R.id.editText1)).
setText(dayOfMonth + "/" + monthOfYear + "/" + year);
}
else
{
if(view.getTag() == "datePicker2")
{
((TextView)getActivity().findViewById(R.id.editText2)).
setText(dayOfMonth + "/" + monthOfYear + "/" + year);
}
}
}
MainActivity.java:
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getFragmentManager(), "datePicker1");
}
});
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getFragmentManager(), "datePicker2");
}
});
请帮助!
答案 0 :(得分:1)
不应该发生。我猜你的代码中有拼写错误。发布您的整个代码,我们可以找到错字。
另外,你不需要这个:
if(DatePickerFragment.this.getTag() == "datePicker1");
将其替换为:
if (getTag()=="datePicker1")
答案 1 :(得分:0)
我找到了部分解决方案。 显然,show()中的标签是针对片段而不是针对视图的,所以这就是我所做的:
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
if(DatePickerFragment.this.getTag() == "datePicker1");
{
((TextView)getActivity().findViewById(R.id.editText1)).
setText(dayOfMonth + "/" + monthOfYear + "/" + year);
}
if(DatePickerFragment.this.getTag() == "datePicker2")
{
((TextView)getActivity().findViewById(R.id.editText2)).
setText(dayOfMonth + "/" + monthOfYear + "/" + year);
}
}
现在我第一次设置它出现在TextView上的日期,但是第二次设置日期(使用另一个按钮)我在TextView2上获得与第一个TextView上相同的日期。
谁知道为什么?如何解决这个问题?