【问题标题】:Using Android DatePickerFragment with two different buttons使用带有两个不同按钮的 Android DatePickerFragment
【发布时间】:2014-11-26 13:41:19
【问题描述】:

我正在尝试让两个不同的按钮打开日期选择对话框,并将所选日期设置为文本到每个按钮旁边的 textView。 我不确定如何将这些与调用区分开来,我尝试使用 Tag,但是在调试时我看到 Views 标记为空。 这是我到目前为止所做的:

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");
        }
    });

请帮忙!

【问题讨论】:

  • MainActivity 中放入public static String TAG;,当一个按钮单击TAG = "datePicker1" 另一个按钮TAG = "datePicker2"。在DatePickerFragment 中使用MainActivity.TAG 现在比较字符串。

标签: android android-fragments datepicker


【解决方案1】:

这不应该发生。我猜你的代码中有错字。发布您的整个代码,我们可以找到错字。

另外你不需要这个:

if(DatePickerFragment.this.getTag() == "datePicker1");

将其替换为:

if (getTag()=="datePicker1")

【讨论】:

    【解决方案2】:

    我找到了部分解决方案。 显然 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 上的日期相同。

    有人知道为什么吗?如何解决这个问题?

    【讨论】:

      猜你喜欢
      • 2013-11-17
      • 1970-01-01
      • 2021-12-19
      • 1970-01-01
      • 2016-07-03
      • 1970-01-01
      • 1970-01-01
      • 2012-08-09
      • 2012-02-21
      相关资源
      最近更新 更多