Android 如何自定义DatePickerDialog以获取标签?

Android 如何自定义DatePickerDialog以获取标签?,android,datepickerdialog,custom-datetimepicker,Android,Datepickerdialog,Custom Datetimepicker,我有一个或多个动态创建的同名EditText。我已经根据从服务器获得的需求表的大小创建了这些EditText。现在,当我点击编辑文本时,我正在调用DatePickerDialog。所以这里我想得到标签,并根据标签设置我选择的日期 这里我不能使用setId。因为我已经把它用在了 复选框 因此,如果我再这样做,我会得到一个冲突。所以我想用setTag。标记将为每个EditText设置,当我单击一次EditText时,我需要获取标记。我还需要在onDateSet函数中获取标记。这样我就可以得到Edit

我有一个或多个动态创建的同名EditText。我已经根据从服务器获得的需求表的大小创建了这些EditText。现在,当我点击编辑文本时,我正在调用DatePickerDialog。所以这里我想得到标签,并根据标签设置我选择的日期

这里我不能使用setId。因为我已经把它用在了 复选框

因此,如果我再这样做,我会得到一个冲突。所以我想用setTag。标记将为每个EditText设置,当我单击一次EditText时,我需要获取标记。我还需要在onDateSet函数中获取标记。这样我就可以得到EditText的位置。谁能告诉我如何定制DatePickerDialog

for(int i =0;i<require.size();i++)
{
 requirement = require.get(i);
 date1 = new EditText(getActivity());
 date1.setLayoutParams(params1);
 date1.setWidth(1000);
 date1.setHint("Date");
 String datetag=new String();
        datetag="rid" +   requirement.r_id + "datetag";
        date1.setTag(datetag);
 date.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            DatePickerDialog dpd = new DatePickerDialog(context,
                    mDateSetListener, myear, mmonth, mday);
            dpd.show();
        }
    });
 }

private DatePickerDialog.OnDateSetListener mDateSetListener = new  DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
        int dayOfMonth) {
    myear = year;
    mmonth = monthOfYear + 1;
    mday = dayOfMonth;
    if (mmonth < 10) {
        month = 0 + Integer.toString(mmonth);
    } else {
        month = Integer.toString(mmonth);
    }
    if (mday < 10) {
        day = 0 + Integer.toString(mday);
    } else {
        day = Integer.toString(mday);
    }
    nextdate = (new StringBuilder().append(myear).append("-")
            .append(month).append("-").append(day)).toString();
    date.setText(nextdate);           
    }
}
};

for(int i=0;i我认为您需要为数组中单击的位置创建一个编辑文本数组和一个变量计数器,如下所示

int positionClicked;
EditText[] dateEditTextAray = new EditText[require.size()];
for(int i =0;i<require.size();i++)
{
final int j = i;
 requirement = require.get(i);
 dateEditTextAray[i] = new EditText(getActivity());
 dateEditTextAray[i].setLayoutParams(params1);
 dateEditTextAray[i].setWidth(1000);
  dateEditTextAray[i].setHint("Date");
 //String datetag=new String();
   //     datetag="rid" +   requirement.r_id + "datetag";
    //    date1.setTag(datetag);
  dateEditTextAray[i].setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
           positionClicked = j;
            DatePickerDialog dpd = new DatePickerDialog(context,
                    mDateSetListener, myear, mmonth, mday);
            dpd.show();
        }
    });
 }

private DatePickerDialog.OnDateSetListener mDateSetListener = new  DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
        int dayOfMonth) {
    myear = year;
    mmonth = monthOfYear + 1;
    mday = dayOfMonth;
    if (mmonth < 10) {
        month = 0 + Integer.toString(mmonth);
    } else {
        month = Integer.toString(mmonth);
    }
    if (mday < 10) {
        day = 0 + Integer.toString(mday);
    } else {
        day = Integer.toString(mday);
    }
    nextdate = (new StringBuilder().append(myear).append("-")
            .append(month).append("-").append(day)).toString();
    dateEditTextAray[positionClicked].setText(nextdate);           
    }
}
};
int;
EditText[]dateEditTextAray=新的EditText[require.size()];

对于(int i=0;i如果我正确获取了您的信息,则日期选择器不会为适当的编辑文本设置日期

如果这是问题所在,您必须执行以下更改

dateEditTextAray[i].setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
       positionClicked = j;
        DatePickerDialog dpd = new DatePickerDialog(v.getContext(),
                mDateSetListener, myear, mmonth, mday);
        dpd.show();
    }
});
您必须传递v.getContext(),而不是传递上下文。 我想这会解决你的问题