Mengatur tahun dan bulan di kalender

Saya mencoba mengatur kalender ke tahun dan bulan yang dimasukkan oleh pengguna menggunakan 2 EditTeks dan untuk beberapa alasan saya tidak berhasil mengubah kalender. Di bawah ini adalah metode yang sedang saya kerjakan saat ini. Adakah yang tahu di mana kesalahan saya?

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 sumber


Jawaban (1)


Bulan di Android-Calendar-API didasarkan pada indeks nol, jadi Anda memerlukan:

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
}

Anda juga harus memeriksa apakah metode Anda change() dipanggil dalam pendengar yang sesuai, hati-hati terhadap OnEditorActionListener. Contoh cara menggunakannya dapat ditemukan di tutorial ini .

PEMBARUAN PENTING:

Jangan lupa untuk menggunakan variabel lokal Anda currentDate untuk memperbarui UI Anda. Anda mengaturnya sampai sekarang dan kemudian membuangnya setelah metode change() berakhir. Seharusnya Anda bisa mencari di Google karena saya bukan ahli Android (hanya ahli kalender). Namun saya telah menemukan, dua kontribusi SO ini yang mungkin memberi Anda gambaran:

pengaturan-tanggal-of-a-datepicker- menggunakan metode-tanggal-pembaruan

cara-memperbarui-date-in-datepiker- dialog-android

person Meno Hochschild    schedule 28.04.2014
comment
Hai, apakah perubahan yang Anda sarankan kepada saya tetapi masih tidak melakukan apa pun dalam hal mengubah kalender. - person Mark101; 29.04.2014
comment
Saya telah mengedit pertanyaan untuk memasukkan metode oncreate saya juga, saya tidak yakin apakah ini ada hubungannya dengan pendengar. - person Mark101; 29.04.2014
comment
@ Mark101 Tolong lihat pembaruan saya. Apa yang akhirnya akan Anda lakukan dengan variabel currentDate? - person Meno Hochschild; 29.04.2014
comment
Saya tidak begitu yakin bagaimana saya dapat memperbaruinya, saya mencoba meneliti caranya tetapi tidak berhasil. Semua contoh yang saya lihat berhenti di baris currentDate.set. - person Mark101; 29.04.2014
comment
@ Mark101 Saya telah menambahkan dua tautan SO yang semoga dapat membantu Anda. - person Meno Hochschild; 29.04.2014
comment
Hei, maaf atas balasan yang terlambat. Saya melihat tautannya tetapi saya masih bingung dengan apa yang saya lewatkan. - person Mark101; 01.05.2014