Tableau de Boutons dans Android
Je veux mapper les boutons d'un tableau de boutons et le code ne contient pas d'erreurs lors de la compilation, mais il y a la force de fermeture quand je le lance:
Button buttons[];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.game_board_view);
//Set OnClick listeners
Button buttons[] = null;
buttons[0] = (Button)findViewById(R.id.buttonOne);
buttons[1] = (Button)findViewById(R.id.buttonTwo);
buttons[2] = (Button)findViewById(R.id.buttonThree);
buttons[3] = (Button)findViewById(R.id.buttonFour);
buttons[4] = (Button)findViewById(R.id.buttonFive);
buttons[5] = (Button)findViewById(R.id.buttonSix);
buttons[6] = (Button)findViewById(R.id.buttonSeven);
buttons[7] = (Button)findViewById(R.id.buttonEight);
buttons[8] = (Button)findViewById(R.id.buttonMid);
}
LogCat:
03-26 21:42:51.455: D/dalvikvm(1156): GC_EXTERNAL_ALLOC freed 55K, 53% free 2566K/5379K, external 1625K/2137K, paused 98ms
03-26 21:42:54.323: D/AndroidRuntime(1156): Shutting down VM
03-26 21:42:54.323: W/dalvikvm(1156): threadid=1: thread exiting with uncaught exception (group=0x40015560)
03-26 21:42:54.343: E/AndroidRuntime(1156): FATAL EXCEPTION: main
03-26 21:42:54.343: E/AndroidRuntime(1156): java.lang.RuntimeException: Unable to start activity ComponentInfo{edu.project.superwordwheel/edu.project.superwordwheel.GameView}: java.lang.NullPointerException
03-26 21:42:54.343: E/AndroidRuntime(1156): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
03-26 21:42:54.343: E/AndroidRuntime(1156): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
03-26 21:42:54.343: E/AndroidRuntime(1156): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
03-26 21:42:54.343: E/AndroidRuntime(1156): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
03-26 21:42:54.343: E/AndroidRuntime(1156): at android.os.Handler.dispatchMessage(Handler.java:99)
03-26 21:42:54.343: E/AndroidRuntime(1156): at android.os.Looper.loop(Looper.java:123)
03-26 21:42:54.343: E/AndroidRuntime(1156): at android.app.ActivityThread.main(ActivityThread.java:3683)
03-26 21:42:54.343: E/AndroidRuntime(1156): at java.lang.reflect.Method.invokeNative(Native Method)
03-26 21:42:54.343: E/AndroidRuntime(1156): at java.lang.reflect.Method.invoke(Method.java:507)
03-26 21:42:54.343: E/AndroidRuntime(1156): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-26 21:42:54.343: E/AndroidRuntime(1156): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-26 21:42:54.343: E/AndroidRuntime(1156): at dalvik.system.NativeStart.main(Native Method)
03-26 21:42:54.343: E/AndroidRuntime(1156): Caused by: java.lang.NullPointerException
03-26 21:42:54.343: E/AndroidRuntime(1156): at edu.project.superwordwheel.GameView.onCreate(GameView.java:43)
03-26 21:42:54.343: E/AndroidRuntime(1156): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
03-26 21:42:54.343: E/AndroidRuntime(1156): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
03-26 21:42:54.343: E/AndroidRuntime(1156): ... 11 more
vous avez d'erreur dans la ligne 43
Mettre
essayez d'utiliser arraylist<Button> ou définir ur tableau de taille comme = new Bouton[9];
je suis un génie 😛 nan sérieusement, logcat dit cela, cochez la case de cette ligne à l'edu.projet.superwordwheel.GameView.onCreate(GameView.java:43).
Je sais que c'est très ennuyeux à lire toutes ces lignes, mais généralement la lecture de logcat est de 1/2 de la réponse. 🙂 bonne chance, j'espère que vous devenir pro débogueur 😉
Mettre
Button[] buttons = new Buttons[9];
au lieu de Button buttons[] = null
. Votre référence à la matrice est nulle.essayez d'utiliser arraylist<Button> ou définir ur tableau de taille comme = new Bouton[9];
je suis un génie 😛 nan sérieusement, logcat dit cela, cochez la case de cette ligne à l'edu.projet.superwordwheel.GameView.onCreate(GameView.java:43).
Je sais que c'est très ennuyeux à lire toutes ces lignes, mais généralement la lecture de logcat est de 1/2 de la réponse. 🙂 bonne chance, j'espère que vous devenir pro débogueur 😉
OriginalL'auteur Mach Mitch | 2013-03-26
Vous devez vous connecter pour publier un commentaire.
Votre tableau est nulle et que vous essayez d'obtenir un indice. C'est ce qui est à l'origine de la
NullPointerException
. Votre tableau doit être initialisé avant que vous pouvez l'utiliser pour stocker vos boutons.Si vous voulez un tableau de neuf boutons, puis modifier cette ligne:
:
Aussi, vous avez un membre de la classe
Button buttons[]
et une variable de fonction locale qui est également nomméeButton buttons[]
. Si c'est intentionnel, puis par tous les moyens continuent. Sinon, vous voudrez certainement changer votre ligne:OriginalL'auteur Michael Celey
Il est généralement préférable si vous n'avez pas à coder en dur des constantes comme un 9 dans votre code. Et vous n'avez généralement pas besoin d'.
Vous pouvez par exemple mettre l'id dans un tableau et de construire dynamiquement, un de taille moyenne
List
à la base de lapas du tout. Mais la performance de l'ajout de 10 boutons n'est pas grave du tout. Ne pas avoir à écrire tous ces chiffres vous aide à éviter les erreurs.
+1 pour l'utilisation de
List<Button>
.Comment obtenir la position du bouton cliqué? Et aussi obtenir le texte du bouton?
href="https://gist.github.com/zapl/2f94844ef4aef9df6a8206f06c474597" >gist.github.com/zapl/2f94844ef4aef9df6a8206f06c474597 - vous pouvez utiliser la vue du
.getId()
méthode pour savoir de qui il s'agissait.OriginalL'auteur zapl
bouton doit être créé, à l'aide de la
new
opérateur:OriginalL'auteur Blackbelt
Essayez le code suivant:
OriginalL'auteur NullPointer
EXEMPLE D'UTILISATION:
FONCTION:
NOTE:
Assurez-vous de la mise en page le bouton id est button1, button2, bouton3, .. .. etc"
OriginalL'auteur Liquid44
J'ai eu ce genre de situation, j'ai choisi une approche différente. J'ai stocké id dans le tableau entier.
OriginalL'auteur Aditya Parmar