- Forum-Beiträge: 29
10.05.2017, 20:09:27 via Website
10.05.2017 20:09:27 via Website
Haudiho,
ich bin ziemlich frisch in der Androidprogramierung und habe folgendes Problem:
In meinem Programm wirft die Initialisierung eines ImageViews eine NullPointerException auf.
Ich hab leider sowohl keine Ahnung was das heißt, noch was ich da falsch gemacht habe.
Hier ist mein Code:
import android.media.MediaPlayer;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ImageView;
public class GameActivity extends AppCompatActivity implements View.OnClickListener {
int counter = 0;
int round = 1;
int coincidence = 0;
boolean finished = true;
final ImageView gameImages = (ImageView)findViewById(R.id.gameImageView);
final MediaPlayer mediaPlayer1 = MediaPlayer.create(GameActivity.this, R.raw.sound1);
final MediaPlayer mediaPlayer2 = MediaPlayer.create(GameActivity.this, R.raw.sound2);
final MediaPlayer mediaPlayer3 = MediaPlayer.create(GameActivity.this, R.raw.sound3);
final MediaPlayer mediaPlayer4 = MediaPlayer.create(GameActivity.this, R.raw.sound4);
final MediaPlayer mediaPlayer5 = MediaPlayer.create(GameActivity.this, R.raw.sound5);
final MediaPlayer mediaPlayer6 = MediaPlayer.create(GameActivity.this, R.raw.sound6);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.game_activity);
gameImages.setOnClickListener(GameActivity.this);
}
public void onClick(View v) {
counter++;
coincidence = (int) (Math.random() * 6 + 1);
if (finished) {
switch (coincidence) {
case 1:
mediaPlayer1.start();
case 2:
mediaPlayer2.start();
case 3:
mediaPlayer3.start();
case 4:
mediaPlayer4.start();
case 5:
mediaPlayer5.start();
case 6:
mediaPlayer6.start();
}
}
showImages();
}
public void showImages(){
if (counter >= round*4){
gameImages.setImageResource(R.drawable.picture3);
finished = false;
}
else{
if (counter >= round*3){
gameImages.setImageResource(R.drawable.picture2);
}
else{
if (counter >= round*2){
gameImages.setImageResource(R.drawable.picture1);
}
else{
if (counter >= round*1){
gameImages.setImageResource(R.drawable.picture0);
}
}
}
}
}
Ich habe den Code ein bisschen abgekürzt, bei mir zeigt er nach und nach 43 Bilder an.
Hier ist die Fehlermeldung, die die Ausführung der App aufwürft:
> 05-10 18:54:04.141 3589-3589/slartbart.example E/AndroidRuntime: FATAL EXCEPTION: main
Process: slartbart.example, PID: 3589
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{slartbart.punchanazi/slartbart.example.GameActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2567)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference
at android.support.v7.app.AppCompatDelegateImplBase.<init>(AppCompatDelegateImplBase.java:120)
at android.support.v7.app.AppCompatDelegateImplV9.<init>(AppCompatDelegateImplV9.java:151)
at android.support.v7.app.AppCompatDelegateImplV11.<init>(AppCompatDelegateImplV11.java:31)
at android.support.v7.app.AppCompatDelegateImplV14.<init>(AppCompatDelegateImplV14.java:55)
at android.support.v7.app.AppCompatDelegateImplV23.<init>(AppCompatDelegateImplV23.java:33)
at android.support.v7.app.AppCompatDelegateImplN.<init>(AppCompatDelegateImplN.java:33)
at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:201)
at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:185)
at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:525)
at android.support.v7.app.AppCompatActivity.findViewById(AppCompatActivity.java:193)
at slartbart.example.GameActivity.<init>(GameActivity.java:18)
at java.lang.Class.newInstance(Native Method)
at android.app.Instrumentation.newActivity(Instrumentation.java:1078)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2557)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Könnt ihr mir bitte sagen, was der Fehler genau bedeutet und wie ich ihn vermeiden bzw. beheben kann?
Mit freundlichen Grüßen,
Ford.
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.