Je développe une application de gestion de tickets (en mode connecté) ; celle-ci est associé à une application web depuis laquelle je récupère les données via une API.
Je dispose de 4 activités :
1. Main : interface de connexion
2. Tickets : liste des tickets
3. Ticket : affichage d'un ticket
4. AddWork : Ajouter une date/heure d'intervention pour le ticket courant
Sur Tickets, j'ai une listview avec la liste des tickets. Lorsque je clique sur un ticket, je démarre une nouvelle activité sur Ticket et passe à la nouvelle activité 2 informations : l'ID du ticket et son nom.
Sur la vue du ticket, j'ai un bouton pour ajouter une intervention. Lorsque l'on clique sur celui-ci je démarre une nouvelle activité de AddWork mais ne termine pas l'activité Ticket.
public void button_show_add_work_form_handler(View target) {
Intent intent = new Intent(getApplicationContext(), AddWorkActivity.class);
intent.putExtra("ticket_id", current_ticket.getId());
intent.putExtra("ticket_fullname", current_ticket.getFullName());
startActivity(intent);
}
Sur ma vue AddWork, j'ai la possibilité depuis l'appbar de faire retour (ou depuis le bouton retour de mon téléphone).
Lorsque je fais retour, ça clos correctement mon activité AddWork et je retourne sur mon Ticket ; seulement une nouvelle instance de Ticket est utilisé ce qui fait planter mon application car deux valeurs ne sont pas renseignés (l'ID et le nom du ticket que j'ai mentionné un peu plus haut).
Dans ma classe Ticket, j'ai essayé ceci sans résultat.
Peut-être que tu devrais regarder la méthode startActivityForResult qui te permet de lancer une nouvelle activité qui renvoie un résultat. Comme ça quand tu fermes ton activité AddWork, tu peux renvoyer le ticket à jour à ton activité Ticket.
private Integer ticket_id;
private String ticket_fullname;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_work);
ticket_fullname = getIntent().getStringExtra("ticket_fullname");
ticket_id = getIntent().getIntExtra("ticket_id", 0);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Intent i = new Intent(); // or // Intent i = getIntent()
i.putExtra("ticket_id", this.ticket_id);
i.putExtra("ticket_fullname", this.ticket_fullname);
setResult(1, i);
finish();
return true;
}
[Android] Nouvelle instance après btn retour
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Mon site - Mon livre sur le XML - Mon blog