Passage d'une activité à l'autre au clique d'un bouton

Résolu/Fermé
YameFAZE Messages postés 201 Date d'inscription mardi 24 avril 2012 Statut Membre Dernière intervention 14 mars 2021 - 17 mars 2017 à 02:11
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 - 17 mars 2017 à 14:29
Bonjour,

J'ai un souci, j'ai créé deux activités avec un bouton qui permet de passer d'une à l'autre, il s'agit d'une page de login avec quelques vérifications d'usage qui mène à une page de confirmation au clique du bouton de connexion. Mais lorsque je clique sur le bouton de connexion l'appli plante. Je n'arrive pas à déterminer d'où vient le problème. Pourtant il n'y a pas d'erreur affichée dans Android Studio et mes deux activités sont bien déclarées dans le manifest. Peut-être un problème au niveau de l'ordre des instructions... ci-dessous les codes de mes deux activités.

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Index extends AppCompatActivity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.index_activity);
final EditText emailUtilisateur = (EditText) findViewById(R.id.email_utilisateur);
final EditText passwordUtilisateur = (EditText) findViewById(R.id.password_utilisateur);
final Button loginButton = (Button) findViewById(R.id.bouton_connexion);
loginButton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
final String loginTxt = emailUtilisateur.getText().toString();
final String passTxt = passwordUtilisateur.getText().toString();
Pattern p = Pattern.compile(".+@.+\\.[a-z]+");
Matcher m = p.matcher(loginTxt);
if (!m.matches())
{
Toast.makeText(Index.this, R.string.erreur_format_email, Toast.LENGTH_SHORT).show();
return;
}
if (loginTxt.equals("") || passTxt.equals(""))
{
Toast.makeText(Index.this, R.string.email_ou_password_vide, Toast.LENGTH_SHORT).show();
return;
}
Intent lien_Index_vers_Start = new Intent(Index.this, Start.class);
lien_Index_vers_Start.putExtra(Start.package_emailUtilisateur, emailUtilisateur.getText().toString());
lien_Index_vers_Start.putExtra(Start.package_passwordUtilisateur, passwordUtilisateur.getText().toString());
startActivity(lien_Index_vers_Start);
}
});
}
}


import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
public class Start extends AppCompatActivity
{
public static final String package_emailUtilisateur = "email_utilisateur";
public static final String package_passwordUtilisateur = "password_utilisateur";
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.start_activity);
Intent lien_Index_vers_Start = getIntent();
TextView affichage_emailUtilisateur = (TextView) findViewById(R.id.vue_email_utilisateur);
TextView affichage_passwordUtilisateur = (TextView) findViewById(R.id.vue_password_utilisateur);
if (lien_Index_vers_Start != null)
{
affichage_emailUtilisateur.setText(lien_Index_vers_Start.getStringExtra(package_emailUtilisateur));
affichage_passwordUtilisateur.setText(lien_Index_vers_Start.getStringExtra(package_passwordUtilisateur));
}
}
}

2 réponses

BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 3 894
17 mars 2017 à 09:01
Hello,

Tu as forcément une erreur remontée dans la console en rouge...
As-tu essayé en debug pas-à-pas? Tu as beaucoup d'instructions qui peuvent mener à un crash. Par exemple, que ce passe-t-il quand le champ emailUtilisateur est vide?
0
YameFAZE Messages postés 201 Date d'inscription mardi 24 avril 2012 Statut Membre Dernière intervention 14 mars 2021
17 mars 2017 à 11:04
Salut,

Non, aucune erreur remontée dans la console. Lorsque le champs emailUtilisateur est vide le toast erreur_format_email s'affiche. Lorsque le champs passwordUtilisateur est vide le toast email_ou_password_vide s'affiche. C'est lorsque les deux champs sont correctement remplis et que je clique sur le bouton connexion que l'appli crash.
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 3 894 > YameFAZE Messages postés 201 Date d'inscription mardi 24 avril 2012 Statut Membre Dernière intervention 14 mars 2021
17 mars 2017 à 11:07
As-tu essayé en debug pas-à-pas?
0
YameFAZE Messages postés 201 Date d'inscription mardi 24 avril 2012 Statut Membre Dernière intervention 14 mars 2021 > BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024
17 mars 2017 à 11:53
Que veux-tu dire par debug pas-à-pas ? Je connais le bouton "play" pour lancer l'appli sur mon smartphone mais c'est tout...
0
YameFAZE Messages postés 201 Date d'inscription mardi 24 avril 2012 Statut Membre Dernière intervention 14 mars 2021 > BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024
17 mars 2017 à 12:11
Ah ça y est, j'ai compris le système de debug, enfin presque. J'ai mis un stop à côté de
startActivity(lien_Index_vers_Start);
puisque le problème semble venir du clique sur le bouton lorsque les champs sont valides. Et lorsque je lance le debug voilà ce que la console m'affiche
Connected to the target VM, address: 'localhost:8601', transport: 'socket'
.
0
YameFAZE Messages postés 201 Date d'inscription mardi 24 avril 2012 Statut Membre Dernière intervention 14 mars 2021 > BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024
17 mars 2017 à 12:12
Bon, ok, en fait non... je ne comprends pas du tout comment fonctionne le debug...
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 3 894
17 mars 2017 à 09:05
Petite remarque en passant.

Pour alléger l'écriture, et éviter les findViewById(), tu peux utiliser ButterKnife
0
YameFAZE Messages postés 201 Date d'inscription mardi 24 avril 2012 Statut Membre Dernière intervention 14 mars 2021
17 mars 2017 à 11:19
Merci.
0