Reihe von Schaltflächen in Android
Möchte ich anzeigen die Tasten, um ein array von buttons und der code hat keine Fehler während der Kompilierung, aber es gibt Kraft zu schließen, wenn ich es:
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
- Sie haben Fehler in Zeile 43
- Setzen
Button[] buttons = new Buttons[9];
stattButton buttons[] = null
. Ihre Referenz auf das array null ist. - versuchen Sie verwenden arraylist<Button> oder define ur array-Größe mag = new Button[9];
- wie haben Sie herausfinden, dass der Fehler in Zeile 43?
- ich bin genial 😛 nee im ernst, logcat sagt er überprüfen Sie diese Zeile auf edu.Projekt.superwordwheel.GameView.onCreate(GameView.java:43).
- danke bro, wie du siehst, ich m nur zu lernen, und das debugging nervt mich viel Zeit 😛
- Ich weiß, es ist wirklich langweilig zu Lesen, all die Linien, aber in der Regel Lesen logcat ist 1/2 von die Antwort. 🙂 viel Glück, hoffe, Sie werden Sie pro debugger; -)
- Yep, du hast Recht Herr Marko ^-^
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein array null ist, und Sie versuchen, einen index in es. Das ist das, was verursacht die
NullPointerException
. Dein array muß initialisiert werden, bevor Sie es verwenden können, zu speichern-buttons.Wenn Sie möchten, ein array von neun Tasten, dann ändern Sie diese Zeile:
Zu diesem:
Du hast auch einen in der Klasse
Button buttons[]
und einer lokalen Funktion, variable, auch genanntButton buttons[]
. Wenn dies beabsichtigt ist, dann mit allen Mitteln tragen. Andernfalls werden Sie wollen, um weitere änderungen zu Ihrer Linie zu diesem:Ist es meist besser, wenn Sie nicht haben, um fest-Konstanten wie eine 9 in den code. Und Sie müssen sich normalerweise nicht.
Können Sie zum Beispiel setzen die ids in ein array und bauen eine dynamisch Größe
List
basiert aufList<Button>
..getId()
Methode, um herauszufinden, welche es war.Schaltfläche erstellt werden, mit der
new
Betreiber:Versuchen Sie den folgenden code:
BEISPIEL:
FUNKTION:
HINWEIS:
Stellen Sie sicher, dass in Ihrem layout die button-id button1, button2, button3, .. usw'
Hatte ich Situationen wie diese, die ich wählte einen anderen Ansatz. Ich gespeicherte id in integer-array.