2010-09-03 21 views
2

Mon activité onClick() ci-dessous ne semble pas faire quoi que ce soit (ne voyant aucune chaîne apparaître), mais je ne reçois aucune erreur. Qu'est-ce que je rate? Y a-t-il un moyen de tracer la fonction?android: bouton onClick(), ne peux pas dire si quelque chose se passe

package com.HelloTabWidget2; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.Button; 
import android.widget.TextView; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Toast; 

public class AlbumsActivity extends Activity { 

    private Button closeButton; 

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     this.setContentView(R.layout.tab1); 
     this.closeButton = (Button)this.findViewById(R.id.button); 
     this.closeButton.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
      Toast.makeText(AlbumsActivity.this, "You clicked the button", Toast.LENGTH_SHORT).show(); 

      } 
     }); 


    } 
} 

Merci!

Répondre

3

Je crois que le problème est avec la méthode anonyme, j'obtiens une erreur en essayant d'utiliser votre code. Ajoutez simplement les implements OnClickListenter.

Si vous avez plus d'un bouton, vous devez ajouter un commutateur ou quelque chose sur v.getId().

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.Toast; 

public class AlbumsActivity extends Activity implements OnClickListener { 
    private Button closeButton; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     this.closeButton = (Button)this.findViewById(R.id.button); 
     this.closeButton.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 
     Toast.makeText(this, "You clicked the button", Toast.LENGTH_SHORT).show(); 

    } 
} 
+0

Cela devrait fonctionner. De plus, c'est mieux pour des raisons de performance. L'enregistrement des écouteurs comme dans la question crée de nouveaux objets lors de l'exécution. – Juri

+0

Oui, mais l'activité n'est pas ce qui utilise onClickListener, c'est le bouton. Si vous essayez d'économiser les performances en faisant cela, vous n'utilisez pas les concepts de conception OO. S'il vous plaît ne le faites pas, sauf si vous avez une raison spécifique de. – Falmarri

1

je dirais que, au lieu d'écrire le code ci-dessous

...setOnClickListener(new OnClickListener() {..." 

Je préférerais l'ocde suivante

"...setOnClickListener(new View.OnClickListener() {..." 
+0

En effet, cela devrait résoudre le problème. – Juri

+0

J'ai essayé les deux méthodes énumérées ci-dessus et je ne reçois toujours aucune indication, que ce soit de mon pain grillé ou du journal. Y a-t-il autre chose qui me manque? – JoshuaBen

+0

Ok, donc si je l'ai mis en place comme une activité indépendante dans un nouveau projet, ça fonctionne bien. Pourtant, quand je l'ai comme une activité dans les onglets, je ne vois rien. Est-ce pourquoi c'est cassant? – JoshuaBen

0

Vous pouvez simplement utiliser le code suivant

Button closeButton = (Button) findViewById(R.id.button); 

    closeButton.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Toast.makeText(getApplicationContext(), "Onclick works", Toast.LENGTH_LONG).show(); 

     } 
    }); 

Si cela fournit une exception, allez-y fais Projet -> Propre. Les choses vont fonctionner correctement

-1
public class Whatever_MainActivity extends Activity 
{ 
    ImageButton button1, button2, button3, button4, button5;  // my buttons 
    Button start, reroll, hold; 

    Button reroll_dice1, reroll_dice2, reroll_dice3, reroll_dice4, reroll_dice5; 

    Button ok_button1; 

@Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Buttons(); // "Come here button" 

     // Scoring_Method(); 
    } 

public void Buttons() 
    { 
     ok_button1 = (Button)findViewById(R.id.ok_button1); 
     ok_button1.setOnClickListener(new OnClickListener() 
         { 
          public void onClick(View buttonn) 
          { 
           reroll_dice1.setVisibility(View.INVISIBLE); 
           reroll_dice2.setVisibility(View.INVISIBLE); 
           reroll_dice3.setVisibility(View.INVISIBLE); 
           reroll_dice4.setVisibility(View.INVISIBLE); 
           reroll_dice5.setVisibility(View.INVISIBLE); 
           ok_button1.setVisibility(View.INVISIBLE); 


           reroll.setVisibility(View.VISIBLE); 
           hold.setVisibility(View.VISIBLE); 
          } 
         }); 
    } 
+0

Vous pourriez envisager de modifier ce post et d'expliquer comment votre code résout le problème OP. Le PO a également eu quelques questions concernant le suivi de l'erreur. –