IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Probleme pour retrouver la valeur d'un EditText


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 49
    Par défaut Probleme pour retrouver la valeur d'un EditText
    Bonjour,

    Je n'arrive pas à récupérer la valeur d'un EditText.

    Merci d'avance pour votre aide,
    Bernard

    J'ai ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	public void send(View v) {
    		EditText tonEdit = (EditText) findViewById(R.id.editTextPhoneNo);
    		String tonTexte = tonEdit.getText().toString();
    	}
    Mais j'ai l'erreur :
    cannot resolve method 'findViewById(int)
    Autre problème, même en mettant tout en commentaire (les deux lignes), quand je clique sur le bouton, l'application plante.
    La déclaration de mon bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        <Button
                android:id="@+id/buttonSend"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:onClick="send"
                android:text="Valider" />

  2. #2
    Membre confirmé Avatar de vertebre
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 184
    Par défaut
    Bonjour,

    Si ta fonction est dans une activity:

    1. déclare la variable en dessous le début de ta class:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public class MonActivity extend Activity {
    EditText tonEdit;
    [....]
    }
    2. Vérifie bien que cette ligne soit dans la méthode onCreate().
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tonEdit = (EditText) findViewById(R.id.editTextPhoneNo)
    Espérant t'avoir aidé,

    Bonne journée

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 49
    Par défaut
    La totalité de la classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    package com.bernard.broadcastreceiver;
     
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.os.Bundle;
    import android.os.Environment;
    import android.telephony.SmsManager;
    import android.telephony.SmsMessage;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;
    import android.content.pm.PackageManager;
     
    public class IncomingSms extends BroadcastReceiver {
    	private static final String ARGUMENT_NAME = "APP_INVENTOR_START";
    	Button buttonSend;
    	EditText textPhoneNo;
    	EditText textSMS;
     
    	final SmsManager sms = SmsManager.getDefault();
     
    	@SuppressWarnings("deprecation")
    	public void onReceive(Context context, Intent intent) {
    		final Bundle bundle = intent.getExtras();
    		PackageManager pm= context.getPackageManager();
    		try {
     
    			if (bundle != null) {
     
    				final Object[] pdusObj = (Object[]) bundle.get("pdus");
     
    				for (int i = 0; i < pdusObj.length; i++) {
     
    					SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
    					String phoneNumber = currentMessage.getDisplayOriginatingAddress();
    			        String senderNum = phoneNumber;
    			        String message = currentMessage.getDisplayMessageBody();
    			        int duration = Toast.LENGTH_LONG;
    					Toast toast = Toast.makeText(context, "senderNum: "+ senderNum + ", message: " + message, duration);
    					toast.show();
    					System.out.println("IncomingNumber :" + senderNum);
    					Toast.makeText(context, senderNum + ": " + message, Toast.LENGTH_SHORT).show();
    					Intent launchIntent = pm.getLaunchIntentForPackage(("appinventor.ai_bernard_pre.IncommingCall"));
    					launchIntent.putExtra(ARGUMENT_NAME, "SMS " + senderNum);
    					context.startActivity(launchIntent);
    				}
                  }
     
    		} catch (Exception e) {
    			Log.e("SmsReceiver", "Exception smsReceiver" +e);
    		}
    	}
    	public void send(View v) {
    		//System.out.println("SEND");
    		//EditText tonEdit = (EditText) findViewById(R.id.editTextPhoneNo);
    		//String tonTexte = tonEdit.getText().toString();
    	}
    }

  4. #4
    Membre confirmé Avatar de vertebre
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 184
    Par défaut
    Je pense que cela doit fonctionner:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.content.pm.PackageManager;
    import android.os.Bundle;
    import android.telephony.SmsManager;
    import android.telephony.SmsMessage;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;
     
    public class IncomingSms extends BroadcastReceiver {
        private static final String ARGUMENT_NAME = "APP_INVENTOR_START";
        Button buttonSend;
        EditText textPhoneNo;
        EditText textSMS;
        EditText tonEdit;
     
        final SmsManager sms = SmsManager.getDefault();
     
        @SuppressWarnings("deprecation")
        public void onReceive(Context context, Intent intent) {
            final Bundle bundle = intent.getExtras();
            PackageManager pm= context.getPackageManager();
            View rootView = ((MainActivity)context).getWindow().getDecorView().findViewById(android.R.id.content); // MainActivity est l'activity qui est lié au layout contenant l'EditText editTextPhoneNo
            tonEdit = (EditText) rootView.findViewById(R.id.editTextPhoneNo);
            try {
     
                if (bundle != null) {
     
                    final Object[] pdusObj = (Object[]) bundle.get("pdus");
     
                    for (int i = 0; i < pdusObj.length; i++) {
     
                        SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
                        String phoneNumber = currentMessage.getDisplayOriginatingAddress();
                        String senderNum = phoneNumber;
                        String message = currentMessage.getDisplayMessageBody();
                        int duration = Toast.LENGTH_LONG;
                        Toast toast = Toast.makeText(context, "senderNum: "+ senderNum + ", message: " + message, duration);
                        toast.show();
                        System.out.println("IncomingNumber :" + senderNum);
                        Toast.makeText(context, senderNum + ": " + message, Toast.LENGTH_SHORT).show();
                        Intent launchIntent = pm.getLaunchIntentForPackage(("appinventor.ai_bernard_pre.IncommingCall"));
                        launchIntent.putExtra(ARGUMENT_NAME, "SMS " + senderNum);
                        context.startActivity(launchIntent);
                    }
                }
     
            } catch (Exception e) {
                Log.e("SmsReceiver", "Exception smsReceiver" +e);
            }
        }
        public void send(View v) {
        System.out.println("SEND");
        String tonTexte = tonEdit.getText().toString();
        }
    }
    Tu ne peux appeler directement findViewById() dans une class qui n'hérite pas d'activity.
    Il faut récupérer la vue parente (rootview) pour pouvoir appeler cette méthode.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 49
    Par défaut
    Je viens de tester, mais dès que j'appuie sur le bouton, l'application se plante.
    Voilà la structure de mon projet :
    Nom : Capture.JPG
Affichages : 222
Taille : 22,1 Ko

    Et le layout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:id="@+id/linearLayout1"
                  android:layout_width="fill_parent"
                  android:layout_height="fill_parent"
                  android:orientation="vertical" >
     
        <TextView
                android:id="@+id/textViewPhoneNo"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Liste des numéros bloqués : "
                android:textAppearance="?android:attr/textAppearanceLarge" />
     
        <EditText
                android:id="@+id/editTextPhoneNo"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:phoneNumber="true" >
        </EditText>
     
        <TextView
                android:id="@+id/textViewSMS"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Texte du Sms à envoyer : "
                android:textAppearance="?android:attr/textAppearanceLarge" />
     
        <EditText
                android:id="@+id/editTextSMS"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:inputType="textMultiLine"
                android:lines="5"
                android:gravity="top" />
     
        <Button
                android:id="@+id/send"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:onClick="send"
                android:text="Valider" />
     
    </LinearLayout>

  6. #6
    Membre confirmé Avatar de vertebre
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 184
    Par défaut
    Je ne suis pas assez compétent pour te répondre sur les broadcastReceiver et les intent qui appellent des packages.

    Mais pour sauvegarder la valeur de cet editText et y accéder dans ton application , tu pourrai le stocker en préférences partagées:

    Pour stocker:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SharedPreferences preferences;
    SharedPreferences.Editor editor;
    preferences = PreferenceManager.getDefaultSharedPreferences(this);
    editor = preferences.edit();
     
    editor.putString("clé", "valeur");
    editor.commit();
    Pour récupérer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SharedPreferences preferences
    preferences = PreferenceManager.getDefaultSharedPreferences(this);
    String value = preferences.getString("clé", "");
    Espérant que quelqu'un de plus calé te donne une meilleur réponse.

Discussions similaires

  1. Probleme pour insérer une valeur dans une bdd
    Par gaetan.tranvouez dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 30/05/2006, 10h58
  2. probleme pour recuperer une valeur
    Par kespy13 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/04/2006, 10h18
  3. Réponses: 21
    Dernier message: 28/02/2006, 15h23
  4. Encore une question, pour retrouver 2 valeur d'une table
    Par danje dans le forum Langage SQL
    Réponses: 5
    Dernier message: 15/09/2005, 00h11
  5. [RMI] Probleme pour retrouver la classe implementée.
    Par Koko22 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 16/09/2004, 19h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo