使用Android DatePickerFragment和两个不同的按钮

时间:2014-11-26 13:41:19

标签: android android-fragments datepicker

我正在尝试使两个不同的按钮打开日期选择对话框,并将所选日期设置为文本到每个按钮旁边的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");
        }
    });

请帮助!

2 个答案:

答案 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上相同的日期。

谁知道为什么?如何解决这个问题?