/ / Android DatePicker, How the - android, datepicker, calendar

DatePicker para Android, Como o - android, datepicker, calendário

Existem duas atividades: Em uma atividade, usei o DatePicker para alterar a data. Este é o código que usei:

public class DataTimePicker extends Activity {
public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Calendar calendar = Calendar.getInstance();
calendar.set(year, monthOfYear, dayOfMonth);
SimpleDateFormat format = new SimpleDateFormat("yyyyƒÍMM‘¬dd»’  HH:mm");
Toast.makeText(DataTimePicker.this,
format.format(calendar.getTime()), Toast.LENGTH_SHORT)
.show();
}
}

No entanto, quando eu entro em outra atividade (atividade principal) para mostrar a data, descobri que a data não foi alterada, ainda está na data atual:

public class MainActivity extends Activity {

Calendar c = Calendar.getInstance();
text_date.setText("You choose:"+ c.get(Calendar.YEAR)+c.get(Calendar.MONTH)+c.get(Calendar.DAY_OF_MONTH));
}

Você poderia me dizer como lidar com este problema, eu quero mostrar a data alterada na segunda atividade (MainActivity).

Respostas:

1 para resposta № 1

Deve ser algo como (observe que o código não é testado):

public class DataTimePicker extends Activity {
public void onDateChanged(DatePicker view, int year,

int monthOfYear, int dayOfMonth) {
Calendar calendar = Calendar.getInstance();
calendar.set(year, monthOfYear, dayOfMonth);
SimpleDateFormat format = new SimpleDateFormat(
"yyyyƒÍMM‘¬dd»’  HH:mm");
Intent i = new Intent(DataTimePicker.this, MainActivity.class);
i.putExtra("YOUR_DATA", String.valueOf(format.format(calendar.getTime())));
}

}

e na classe MainActivity você faz algo como:

 Bundle extras = getIntent().getExtras();
if(extras == null) {
newString= null;
} else {
newString= extras.getString("YOUR_DATA");
}

0 para resposta № 2

Não posso adicionar comentários .. então vou te ajudar aqui

Você tem que passar a data selecionada para sua segunda atividade. Em seu código acima, você apenas obtém a data atual todas as vezes.

Você pode usar prefferences, intent.putExtra (chave, valor) ou acrescentar uma variável de sua segunda atividade ...


0 para resposta № 3

O principal problema aqui é que você deve saber que Calendar.getInstance() não é um Singleton, ele retorna uma nova instância sempre que você o chama.

Então, para passar um objeto de um Activity para outro, você pode verificar esta resposta: Carregando dados dinamicamente para uma nova visualização