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

Résolu
YameFAZE Messages postés 201 Date d'inscription   Statut Membre Dernière intervention   -  
BunoCS Messages postés 15952 Date d'inscription   Statut Modérateur Dernière intervention   -
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));
}
}
}
A voir également:

2 réponses

BunoCS Messages postés 15952 Date d'inscription   Statut Modérateur Dernière intervention   3 917
 
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   Statut Membre Dernière intervention  
 
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 15952 Date d'inscription   Statut Modérateur Dernière intervention   3 917 > YameFAZE Messages postés 201 Date d'inscription   Statut Membre Dernière intervention  
 
As-tu essayé en debug pas-à-pas?
0
YameFAZE Messages postés 201 Date d'inscription   Statut Membre Dernière intervention   > BunoCS Messages postés 15952 Date d'inscription   Statut Modérateur Dernière intervention  
 
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   Statut Membre Dernière intervention   > BunoCS Messages postés 15952 Date d'inscription   Statut Modérateur Dernière intervention  
 
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   Statut Membre Dernière intervention   > BunoCS Messages postés 15952 Date d'inscription   Statut Modérateur Dernière intervention  
 
Bon, ok, en fait non... je ne comprends pas du tout comment fonctionne le debug...
0
BunoCS Messages postés 15952 Date d'inscription   Statut Modérateur Dernière intervention   3 917
 
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   Statut Membre Dernière intervention  
 
Merci.
0