мы можем получить ссылку на диалог выбора даты из DateSetListener? - PullRequest
0 голосов
/ 15 июля 2011

Есть ли способ получить ссылку на диалог выбора даты из прослушивателя установки даты, поскольку в его параметре отображается только прослушиватель установки даты?

  if(Type.equalsIgnoreCase("datepicker")
{ mField=new EditText(context); 
((EditText) mField).setText("Pick Date"); 
ll.addView(mField); 
mField.setOnClickListener(new View.OnClickListener()
 {
 @Override public void onClick(View v) 
{
 final Calendar cal = Calendar.getInstance();
 mYear = cal.get(Calendar.YEAR); 
mMonth = cal.get(Calendar.MONTH);
 mDay = cal.get(Calendar.DAY_OF_MONTH); 
DatePickerDialogWithEditText dialog= new DatePickerDialogWithEditText(context, mdatepickerdialog , mYear, mMonth, mDay, (EditText)mField ); 
dialog.show(); } });
 } }
    private DatePickerDialogWithEditText.OnDateSetListener mdatepickerdialog = new DatePickerDialogWithEditText.OnDateSetListener() 
{ 
public void onDateSet(DatePicker view , int year , int month, int date) 
{ 
mYear = year; mMonth = month; mDay = date; EditText et = ((DatePickerDialogWithEditText.OnDateSetListener)this).getAssociatedTextView(); 
et.setText(new StringBuilder().append(mDay).append("-").append(mMonth).append("-").append(mYear)); } };
 } 
    class DatePickerDialogWithEditText extends DatePickerDialog 
{
 EditText tv; 
DatePickerDialogWithEditText(Context c, OnDateSetListener oD, int y, int m, int d, EditText tv) 
{ 
super(c, oD, y, m, d); this.tv = tv;
 }
 EditText getAssociatedTextView() 
{ 
return tv; 
} 
} 

Ответы [ 2 ]

1 голос
/ 18 августа 2011

вот код:

if(Type.equalsIgnoreCase("datepicker"))
        {
            mField=new EditText(context);
            ((EditText) mField).setText("Pick Date");
            ll.addView(mField);
            mField.setOnClickListener(new View.OnClickListener()
            {
                @Override
                public void onClick(View v) 
                {
                    dialognew = new Mynewdialog(context);
                    dialognew.dialog_obj((EditText) mField);
                }
            });
        }
    }   

    protected DatePickerDialogWithEditText.OnDateSetListener mdatepickerdialog = new DatePickerDialogWithEditText.OnDateSetListener()
    {
        public void onDateSet(DatePicker view , int year , int month, int date)
         {
             mYear = year;
             mMonth = month;
             mDay = date;
             dialognew.showdialogtext();

         }
     };
}

class DatePickerDialogWithEditText extends DatePickerDialog 
{
    EditText tv;    

    DatePickerDialogWithEditText(Context c, OnDateSetListener oD, int y, int m, int d, EditText tv) 
    {
        super(c, oD, y, m, d);
        this.tv = tv;
    }

    EditText getAssociatedTextView() 
    {
        return tv;
    }
}


class Mynewdialog 
{
    private Context context;
    Display dis = new Display(context);
    private DatePickerDialogWithEditText dialog;

    public Mynewdialog(Context mcontext)
    {
        context=mcontext;       
    }

    public void dialog_obj(EditText editTextView)
    {
        final Calendar cal = Calendar.getInstance();
        dis.mYear = cal.get(Calendar.YEAR);
        dis.mMonth = cal.get(Calendar.MONTH);
        dis.mDay = cal.get(Calendar.DAY_OF_MONTH);
        dialog = new DatePickerDialogWithEditText(context, dis.mdatepickerdialog, dis.mYear, dis.mMonth, dis.mDay, editTextView);
        dialog.show();
    }

    public void showdialogtext()
    {
        EditText et = dialog.getAssociatedTextView();
        et.setText(new StringBuilder().append(dis.mDay).append("-").append(dis.mMonth).append("-").append(dis.mYear));
    }   
}
1 голос
/ 15 июля 2011
DatePickerDialogWithEditText dialog= new DatePickerDialogWithEditText(context, mdatepickerdialog , mYear, mMonth, mDay, (EditText)mField ); 

вместо вышеприведенного оператора .. Диалог DatePickerDialogWithEditText эта переменная переменная класса или переменная экземпляра, чтобы она была видна всему классу .... Я имею в виду, как это

Class A
{
private DatePickerDialogWithEditText dialog;
public some method
{
dialog= new DatePickerDialogWithEditText(context, mdatepickerdialog , mYear, mMonth, mDay, (EditText)mField ); 
}
}
...