Il y a deux activités: Dans une activité, j'ai utilisé le DatePicker pour changer la date. Voici le code que j'ai utilisé:
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();
}
}
Cependant, lorsque j'entre dans une autre activité (activité principale) pour afficher la date, j'ai trouvé que la date n'est pas modifiée, est toujours à la date actuelle:
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));
}
Pourriez-vous me dire comment gérer ce problème, je souhaite afficher la date modifiée dans la deuxième activité (MainActivity
).
Réponses:
1 pour la réponse № 1Cela devrait être quelque chose comme (notez que le code n'est pas testé):
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())));
}
}
et dans la classe MainActivity, vous faites quelque chose comme:
Bundle extras = getIntent().getExtras();
if(extras == null) {
newString= null;
} else {
newString= extras.getString("YOUR_DATA");
}
0 pour la réponse № 2
Je ne peux pas ajouter de commentaire .. je vais donc vous aider ici
Vous devez passer la date sélectionnée à votre deuxième activité. Dans votre code ci-dessus, vous obtenez à chaque fois la date actuelle.
Vous pouvez utiliser des prefferences, intent.putExtra (clé, valeur) ou ajouter une variable de votre deuxième activité ...
0 pour la réponse № 3
Le principal problème ici est que vous devez savoir que Calendar.getInstance()
n'est pas un Singleton
, il renvoie une nouvelle instance chaque fois que vous l'appelez.
Donc, pour passer un objet d'un Activity
à un autre, vous pouvez vérifier cette réponse: Chargement dynamique des données dans une nouvelle vue