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 :

fragments + MainActivity


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Novembre 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2012
    Messages : 20
    Par défaut fragments + MainActivity
    Bonjour,

    J'ai 2 fragments qui utilisent le même bouton chacun dans leur vue. Je voudrais utiliser le même listener. Le bouton et le listener sont dans la MainActivity.
    dans la MainActivity j'ai :
    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
    public static Button bt_tout_bem = null;	//utilisé dans les fragments
     
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		// classique
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
     
                   ....... code...........
            }
     
    	public OnClickListener ListenerToutBemol = new View.OnClickListener() {
    		@Override
    		public void onClick(View v) {
                             ..... code.......			
    		}
    	};
    Dans le fragment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	@Override
    	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    		//
    		View v = inflater.inflate(R.layout.fragment_reglages, container, false);
     
              //la ligne suivante est OK:
    		MainActivity.bt_tout_bem = (Button) v.findViewById(R.id.btn_tout_bem);
     
              //dans la ligne suivante "MainActivity.ListenerToutBemol" est problématique!!!!!
    		 MainActivity.bt_tout_bem.setOnClickListener(MainActivity.ListenerToutBemol);	                
     
                   return v;
            }
    Quelqu'un pourrait-il m'aider à trouver la bonne syntaxe pour MainActivity.ListenerToutBemol ?

    D'avance merci.

  2. #2
    Membre averti
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Novembre 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2012
    Messages : 20
    Par défaut erreur de bleu!
    Citation Envoyé par lartisan Voir le message
    Bonjour,

    J'ai 2 fragments qui utilisent le même bouton chacun dans leur vue. Je voudrais utiliser le même listener. Le bouton et le listener sont dans la MainActivity.
    dans la MainActivity j'ai :
    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
    public static Button bt_tout_bem = null;	//utilisé dans les fragments
     
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		// classique
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
     
                   ....... code...........
            }
     
    	public OnClickListener ListenerToutBemol = new View.OnClickListener() {
    		@Override
    		public void onClick(View v) {
                             ..... code.......			
    		}
    	};
    Dans le fragment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	@Override
    	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    		//
    		View v = inflater.inflate(R.layout.fragment_reglages, container, false);
     
              //la ligne suivante est OK:
    		MainActivity.bt_tout_bem = (Button) v.findViewById(R.id.btn_tout_bem);
     
              //dans la ligne suivante "MainActivity.ListenerToutBemol" est problématique!!!!!
    		 MainActivity.bt_tout_bem.setOnClickListener(MainActivity.ListenerToutBemol);	                
     
                   return v;
            }
    Quelqu'un pourrait-il m'aider à trouver la bonne syntaxe pour MainActivity.ListenerToutBemol ?

    D'avance merci.

    finalement je n'avais même pas été voir la correction que me proposait Eclipse tellement persuadé que je faisais une erreur de syntaxe!
    Non le problème est qu'il fallait, dans MainActivity, que la méthode ListenerToutBemol soit static. Rien de plus! Rien de moins.

  3. #3
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut


    Je ne vois pas pourquoi il devrait être statique.....

    On pourrait voir le code "complet" ? Et l'erreur d'eclipse associée ?

    Pourquoi déclarer le listener en dehors de la méthode onCreate ?
    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
     
    public void onCreate(...)
    { 
         ....
     
         View.OnClickListener listener = new View.OnClickListener() {
                ...
         }
     
         View v1 = ..;
         v1.setOnClickListener(listener);
     
         View v2 = ..;
         v2.setOnClickListener(listener);
    }

    P.S. attention aux noms des fonctions et variable, la convention java veut qu'ils commencent par une minuscule !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. RAW + fragmentation
    Par MonsieurAk dans le forum Windows
    Réponses: 2
    Dernier message: 07/04/2005, 19h45
  2. Réponses: 17
    Dernier message: 18/03/2005, 15h56
  3. Fragment & vertex program
    Par charly dans le forum OpenGL
    Réponses: 5
    Dernier message: 19/03/2004, 19h47
  4. fragment program sur geForce4 Ti4200
    Par sebh dans le forum OpenGL
    Réponses: 6
    Dernier message: 03/12/2003, 22h31
  5. Fragmentation du DD
    Par guillaume_pfr dans le forum Administration système
    Réponses: 5
    Dernier message: 05/06/2003, 17h19

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