- Forum-Beiträge: 1
09.03.2018, 05:14:13 via Website
09.03.2018 05:14:13 via Website
Hallo ich bin ein Anfänger und versuche mich in der Programmiersprache.
Ich habe das Problem, dass ich bei Klick eines Arrays auf die nächste Activity wechseln will, wobei mein Emulator immer wieder abstürzt. Ich benötige Hilfe.
beginning of crash
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.onurs.quizduellonur, PID: 2286
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.get(ArrayList.java:411)
at com.example.onurs.quizduellonur.Spiel.FrageAuswertung(Spiel.java:159)
at com.example.onurs.quizduellonur.Spiel.onClick(Spiel.java:112)
at android.view.View.performClick(View.java:5610)
at android.view.View$PerformClick.run(View.java:22265)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
Application terminated.
So sieht der Code aus:
package com.example.onurs.quizduellonur;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.util.ArrayList;
public class Spiel extends AppCompatActivity implements View.OnClickListener{
Button btnAntwortEins, btnAntwortZwei, btnAntwortDrei, btnAntwortVier;
TextView textView;
TextView tvScore;
int aktuelleFrage = 0;
//Endbildschirm? oder sonst was
int Punkte = 0;
//Man kann direkt in der selben Zeile wenn es derselbe Typ ist erstellen und mit "," trennen!
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_spiel);
btnAntwortEins = (Button) findViewById(R.id.btnAntwortEins);
btnAntwortZwei = (Button) findViewById(R.id.btnAntwortZwei);
btnAntwortDrei = (Button) findViewById(R.id.btnAntwortDrei);
btnAntwortVier = (Button) findViewById(R.id.btnAntwortVier);
//Hier weiß Java dass es ein TextView gibt und welches!
textView = (TextView) findViewById(R.id.textView);
tvScore = (TextView) findViewById(R.id.tvScore);
btnAntwortEins.setOnClickListener(this);
btnAntwortZwei.setOnClickListener(this);
btnAntwortDrei.setOnClickListener(this);
btnAntwortVier.setOnClickListener(this);
}
@SuppressLint("SetTextI18n")
private void FrageLaden(){
//Erst Objekt dass wir auf die Fragen zugreifen können, dann eine ArrayList mit den Fragen
//und dann müssen wir noch einen String Array erstellen um die Fragen zu speichern
Fragen FragenC = new Fragen();
ArrayList <String[]> Fragen = FragenC.getFragen();
String[] Frage = Fragen.get(aktuelleFrage);
//An welcher Stelle von dem String steht die Frage!
textView.setText(Frage[0]);
//Butons und an zufälligen Stellen
int ZufallsZahl = (int)(Math.random() * (4-1)+1);
//jetzt kommt ein Algorithmus!
switch(ZufallsZahl){
case 1:
btnAntwortEins.setText(Frage[1]);
btnAntwortZwei.setText(Frage[2]);
btnAntwortDrei.setText(Frage[3]);
btnAntwortVier.setText(Frage[4]);
//Wenn die Zufallszahl 1 ist, dann kriegt Button Antwort 1, 2 die zwei usw, dann
//restliche Anordnung aber geändert!
break;
case 2:
btnAntwortEins.setText(Frage[4]);
btnAntwortZwei.setText(Frage[3]);
btnAntwortDrei.setText(Frage[1]);
btnAntwortVier.setText(Frage[2]);
break;
case 3:
btnAntwortEins.setText(Frage[2]);
btnAntwortZwei.setText(Frage[1]);
btnAntwortDrei.setText(Frage[4]);
btnAntwortVier.setText(Frage[3]);
break;
case 4:
btnAntwortEins.setText(Frage[3]);
btnAntwortZwei.setText(Frage[4]);
btnAntwortDrei.setText(Frage[2]);
btnAntwortVier.setText(Frage[1]);
break;
}
//Als wirklich fast allerletztes Punktestand angeben! und dann bei Ende Anzeigen usw.!
tvScore.setText("Punkte:" + Punkte);
}
@Override
public void onClick(View view) {
//welcher Button wird angeklickt?
switch (view.getId()) {
case R.id.btnAntwortEins:
//Als letztes was müssen wir alles wissen! und in Klammer wie kommen wir an den Text von btnText
if(FrageAuswertung(btnAntwortEins.getText().toString())) {
Punkte++;
}
if(aktuelleFrage >=1) {
//Jetzt geht es um das Ende! von this zu Ende.class!
Intent intent = new Intent(this, Ende.class);
intent.putExtra("Punkte", Punkte);
startActivity(intent);
}else{
aktuelleFrage++;
FrageLaden();
}
break;
//Break sagt die Anweisung ist vorbei sonst geht switch in die nächsten!
case R.id.btnAntwortZwei:if(FrageAuswertung(btnAntwortZwei.getText().toString())) {
Punkte++;
}
if(aktuelleFrage >=1) {
Intent intent = new Intent(this, Ende.class);
intent.putExtra("Punkte", Punkte);
startActivity(intent);
}else{
aktuelleFrage++;
FrageLaden();
}
break;
case R.id.btnAntwortDrei:if(FrageAuswertung(btnAntwortDrei.getText().toString())) {
Punkte++;
}
if(aktuelleFrage >=1) {
Intent intent = new Intent(this, Ende.class);
intent.putExtra("Punkte", Punkte);
startActivity(intent);
}else{
aktuelleFrage++;
FrageLaden();
}
break;
case R.id.btnAntwortVier:if
(FrageAuswertung(btnAntwortVier.getText().toString())) {
Punkte++;
}
if(aktuelleFrage >=1) {
Intent intent = new Intent(this, Ende.class);
intent.putExtra("Punkte", Punkte);
startActivity(intent);
}else{
aktuelleFrage++;
FrageLaden();
}
break;
//Was für tvScore? dafür das folgende!
}
}
private boolean FrageAuswertung(String btnText){
boolean Frage = false;
Fragen FragenC = new Fragen();
ArrayList Fragen = FragenC.getFragen();
//Nun haben wir durch ArrayList alle Fragen gespeichert und FragenC ist einfach ein neues Objekt!
String[] Speicher = (String[]) Fragen.get(aktuelleFrage);
if(Speicher[1].equals(btnText)){
Frage = true;
}
return Frage;
}
}