Установка года и месяца в календаре

Я пытаюсь установить календарь на год и месяц, введенные пользователем с помощью 2 EditTexts, и по какой-то причине мне не удается изменить календарь. Ниже приведен метод, над которым я сейчас работаю. Кто-нибудь знает, где я ошибаюсь?

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button change2 = (Button) findViewById(R.id.button1);

    change2.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            change();
        }
    });
}

public void change() {
    Calendar currentDate = GregorianCalendar.getInstance();

    Month = (EditText) findViewById(R.id.editText1);
    Year = (EditText) findViewById(R.id.editText2);

    int newmonth = Integer.parseInt(Month.getText().toString());
    int newyear = Integer.parseInt(Year.getText().toString());

    currentDate.set (Calendar.YEAR, newyear);
    currentDate.set (Calendar.MONTH, newmonth);
}

person Mark101    schedule 27.04.2014    source источник


Ответы (1)


Месяцы в Android-Calendar-API основаны на нулевом индексе, поэтому вам нужно:

public void change() {
  Calendar currentDate = GregorianCalendar.getInstance();

  Month = (EditText) findViewById(R.id.editText1);
  Year = (EditText) findViewById(R.id.editText2);

  int newmonth = Integer.parseInt(Month.getText().toString());
  int newyear = Integer.parseInt(Year.getText().toString());

  currentDate.set (Calendar.YEAR, newyear);
  currentDate.set (Calendar.MONTH, newmonth - 1); // here the change
}

Вы также должны проверить, вызывается ли ваш метод change() в подходящем слушателе, следите за OnEditorActionListener. Пример его использования можно найти в этом руководстве. .

ВАЖНОЕ ОБНОВЛЕНИЕ:

Не забудьте использовать локальную переменную currentDate для обновления пользовательского интерфейса. Вы устанавливаете его до сих пор, а затем выбрасываете после завершения метода change(). У вас должна быть возможность гуглить, так как я не эксперт по Android (просто эксперт по календарю). Однако я нашел эти два SO-вклада, которые могут дать вам представление:

setting-the-date-of-datepicker- используя-метод-обновления

how-to-update-the-date-in-datepiker- диалоговое Android

person Meno Hochschild    schedule 28.04.2014
comment
Привет, сделал изменение, которое вы мне посоветовали, но оно по-прежнему ничего не делает с точки зрения изменения календаря. - person Mark101; 29.04.2014
comment
Я отредактировал вопрос, включив в него и свой метод oncreate, я не уверен, что это связано со слушателем. - person Mark101; 29.04.2014
comment
@Mark101 Посмотрите мое обновление, пожалуйста. Что вы в итоге будете делать с переменной currentDate? - person Meno Hochschild; 29.04.2014
comment
Я не совсем уверен, как я могу его обновить, я пытался исследовать, как это сделать, но не повезло. Все примеры, которые я видел, останавливаются на строке currentDate.set. - person Mark101; 29.04.2014
comment
@Mark101 Mark101 Я добавил две SO-ссылки, которые, надеюсь, помогут вам. - person Meno Hochschild; 29.04.2014
comment
Эй, извините за поздний ответ. Я просмотрел ссылки, но я все еще не понимаю, чего мне не хватает. - person Mark101; 01.05.2014