проблемы с выбором даты в приложении для Android - PullRequest
1 голос
/ 26 марта 2011

Привет, в моем приложении я поместил два текстовых поля редактирования, когда я касаюсь его, появляется диалоговое окно выбора даты.

Теперь проблема в том, когда я касаюсь первого окна редактирования, открывается диалоговое окно и послеустановка его отображается в EditText1.Затем, когда я касаюсь второго поля редактирования, открывается диалоговое окно, и после установки какой-либо другой даты она не отображается в EditText2, вместо этого она отображается в EditText1, а прежняя дата изменяется

Я хочу, чтобы даты былиотображается в соответствующих полях.

Ниже приведен мой код

{
    et1 =(EditText)findViewById(R.id.widget29);
    et1.setHint("DOB");
    et2 =(EditText)findViewById(R.id.widget32);
    et2.setHint("DOF");

    et1.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            showDialog(DATE_DIALOG_ID);
        }
    });

    et2.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            showDialog(DATE_DIALOG_ID);
        }
    });


 // get the current date
    final Calendar c = Calendar.getInstance();
    mYear = c.get(Calendar.YEAR);
    mMonth = c.get(Calendar.MONTH);
    mDay = c.get(Calendar.DAY_OF_MONTH);

}


private void updateDisplay()
{
    this.et1.setText(
            new StringBuilder()
                    // Month is 0 based so add 1
                    .append(mMonth + 1).append("-")
                    .append(mDay).append("-")
                    .append(mYear).append("-"));
}


private void updateDisplay1()
{
    this.et2.setText(
        new StringBuilder()
                // Month is 0 based so add 1
                .append(mMonth + 1).append("-")
                .append(mDay).append("-")
                .append(mYear).append("-"));
}

private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener()
    {
        public void onDateSet(DatePicker view, int year,int monthOfYear, int dayOfMonth) 
        {
            mYear = year;
            mMonth = monthOfYear;
            mDay = dayOfMonth;
            updateDisplay();
        }
    };



    private DatePickerDialog.OnDateSetListener mDateSetListener1 = new DatePickerDialog.OnDateSetListener()
    {
        public void onDateSet(DatePicker view, int year,
                              int monthOfYear, int dayOfMonth) {
            mYear = year;
            mMonth = monthOfYear;
            mDay = dayOfMonth;
            updateDisplay1();
        }
    };

    @Override
    protected Dialog onCreateDialog(int id) 
    {
       switch (id) 
       {
          case DATE_DIALOG_ID:
          return new DatePickerDialog(this, mDateSetListener, mYear, mMonth, mDay);
       }
       return null;
    }
}

Ниже приведены некоторые другие проблемы, с которыми я сталкиваюсь,

  1. Всякий раз, когда яприкоснитесь к текстовому полю редактирования, чтобы открыть клавиатуру, как скрыть клавиатуру

  2. в поле EditText. Я хочу, чтобы ордер отображался как год / месяц / дата

  3. Есть ли способ изменить диалоговое окно выбора даты, как показано на рисунке ниже

enter image description here

, пожалуйста, помогите мне в этом

Ответы [ 2 ]

4 голосов
/ 26 марта 2011

Проверьте этот код ..

public class Main extends Activity {
EditText et1,et2;
static final int DATE_DIALOG_ID = 0;
static final int DATE_DIALOG_ID1 = 1;
private int mYear;
private int mMonth;
private int mDay;

private int mYear1;
private int mMonth1;
private int mDay1;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    et1=(EditText)findViewById(R.id.EditText01);
    et2=(EditText)findViewById(R.id.EditText02);

    final Calendar c = Calendar.getInstance();
    mYear = c.get(Calendar.YEAR);
    mMonth = c.get(Calendar.MONTH);
    mDay = c.get(Calendar.DAY_OF_MONTH);
    et1.setText("month/year");
    et2.setText("month/year");
    et1.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
            showDialog(DATE_DIALOG_ID);
            return false;
        }
    });

    et2.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
            showDialog(DATE_DIALOG_ID1);
            return false;
        }
    });

}

@Override
protected Dialog onCreateDialog(int id) {
    switch (id) {
    case DATE_DIALOG_ID:
        return new DatePickerDialog(this, mDateSetListener, mYear, mMonth,
                mDay);

    case DATE_DIALOG_ID1:
        return new DatePickerDialog(this, mDateSetListener1, mYear1, mMonth1,
                mDay1);
    }
    return null;
}

// updates the date in the TextView

private void updateDisplay() {
    et1.setText(new StringBuilder()
    // Month is 0 based so add 1
            .append(mMonth + 1).append("-").append(mYear));
}
private void updateDisplay1() {

    et2.setText(new StringBuilder()
    // Month is 0 based so add 1
            .append(mMonth1 + 1).append("-").append(mYear1));
}
// the callback received when the user "sets" the date in the dialog
private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {
    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear,
            int dayOfMonth) {
        // TODO Auto-generated method stub
        mYear = year;
        mMonth = monthOfYear;
        mDay = dayOfMonth;
        updateDisplay();
    }
};

private DatePickerDialog.OnDateSetListener mDateSetListener1 = new DatePickerDialog.OnDateSetListener() {
    @Override
    public void onDateSet(DatePicker view, int year1, int monthOfYear1,
            int dayOfMonth1) {
        // TODO Auto-generated method stub
        mYear1 = year1;
        mMonth1 = monthOfYear1;
        mDay1 = dayOfMonth1;
        updateDisplay1();
    }
};

}

1 голос
/ 26 марта 2011

Вы устанавливаете один и тот же идентификатор для обоих методов отображения диалога ...

et1.setOnClickListener(new View.OnClickListener()
{
    @Override
    public void onClick(View v)
    {
        showDialog(DATE_DIALOG_ID);
    }
});

et2.setOnClickListener(new View.OnClickListener()
{
    @Override
    public void onClick(View v)
    {
        showDialog(DATE_DIALOG_ID);
    }
});

... и ваш блок переключателей / регистров имеет только один регистр ....

   switch (id) 
   {
      case DATE_DIALOG_ID:
      return new DatePickerDialog(this, mDateSetListener, mYear, mMonth, mDay);
   }

Что касается других вопросов, разделите их на отдельные вопросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...