/ / Android DatePicker, Comment le - android, datepicker, calendrier

Android DatePicker, Comment le - Android, Datepicker, calendrier

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

Cela 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