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 № 1Deve 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