M
Manuel1805
Ambitioniertes Mitglied
- 2
Hallo zusammen,
ich habe im Internet den Code für ein Quiz gefunden:
Quiz App- Fragen speichern und mit Buttons u. TextView verbinden — Android Forum - AndroidPIT
Der Code lässt sich auch einwandfrei umsetzen. Ich möchte diesen Code gerne mit Fragments umsetzen. Leider komme ich hier nicht weiter. Vielleicht weiß jemand die Lösung.
Ich füge diesem Post die Fehlermeldung und den Code bei. Vielen Dank schon mal.
#############################
Ich habe den Text:
((TextView) quizActivity.findViewById(R.id.frage)).setText(frage);
Durch den folgenden ersetzt:
((TextView) quizActivity.getActivity().findViewById(id.frage))
.setText(frage);
Wie kann ich das Objekt Fragentext oder Button ansprechen?
##############################
Fehlermeldung:
08-26 20:54:09.650: E/AndroidRuntime(29709): FATAL EXCEPTION: main
08-26 20:54:09.650: E/AndroidRuntime(29709): java.lang.NullPointerException
08-26 20:54:09.650: E/AndroidRuntime(29709): at de.manuel.buchenfueranfaenger.Frage.anzeigen(Frage.java:28)
ich habe im Internet den Code für ein Quiz gefunden:
Quiz App- Fragen speichern und mit Buttons u. TextView verbinden — Android Forum - AndroidPIT
Der Code lässt sich auch einwandfrei umsetzen. Ich möchte diesen Code gerne mit Fragments umsetzen. Leider komme ich hier nicht weiter. Vielleicht weiß jemand die Lösung.
Ich füge diesem Post die Fehlermeldung und den Code bei. Vielen Dank schon mal.
#############################
Ich habe den Text:
((TextView) quizActivity.findViewById(R.id.frage)).setText(frage);
Durch den folgenden ersetzt:
((TextView) quizActivity.getActivity().findViewById(id.frage))
.setText(frage);
Wie kann ich das Objekt Fragentext oder Button ansprechen?
##############################
Fehlermeldung:
08-26 20:54:09.650: E/AndroidRuntime(29709): FATAL EXCEPTION: main
08-26 20:54:09.650: E/AndroidRuntime(29709): java.lang.NullPointerException
08-26 20:54:09.650: E/AndroidRuntime(29709): at de.manuel.buchenfueranfaenger.Frage.anzeigen(Frage.java:28)
Code:
package de.manuel.buchenfueranfaenger;
import android.app.Fragment;
import android.widget.Button;
import android.widget.TextView;
import de.manuel.buchenfueranfaenger.R.id;
class Frage {
private String frage;
private String option1;
private String option2;
private String option3;
private String option4;
private int loesung;
public Frage(String f, String o1, String o2, String o3, String o4, int l) {
frage = f;
option1 = o1;
option2 = o2;
option3 = o3;
option4 = o4;
loesung = l;
}
public void anzeigen(Fragment quizActivity) {
((TextView) quizActivity.getActivity().findViewById(id.frage))
.setText(frage);
((Button) quizActivity.getActivity().findViewById(id.antwort1))
.setText(option1);
((Button) quizActivity.getActivity().findViewById(id.antwort2))
.setText(option2);
((Button) quizActivity.getActivity().findViewById(id.antwort3))
.setText(option3);
((Button) quizActivity.getActivity().findViewById(id.antwort4))
.setText(option4);
}
public boolean richtig(int ausgewaehlt) {
if (ausgewaehlt == this.loesung)
return true;
else
return false;
}
}
Code:
package de.manuel.buchenfueranfaenger;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
public class QuizActivity extends Fragment implements
android.view.View.OnClickListener {
Spiellogik spiel;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_quiz, container, false);
/*
* @Override public void onCreate(Bundle savedInstanceState) {
* super.onCreate(savedInstanceState);
* setContentView(R.layout.activity_quiz);
*/
// Spiellogik instanziieren
spiel = new Spiellogik();
// Antwort-Buttons mit Ereignislistener verbinden
for (int n = 1; n <= 4; n++) {
Button btn = null;
switch (n) {
case 1:
btn = (Button) view.findViewById(R.id.antwort1);
btn.setOnClickListener(this);
break;
case 2:
btn = (Button) view.findViewById(R.id.antwort2);
btn.setOnClickListener(this);
break;
case 3:
btn = (Button) view.findViewById(R.id.antwort3);
btn.setOnClickListener(this);
break;
case 4:
btn = (Button) view.findViewById(R.id.antwort4);
btn.setOnClickListener(this);
break;
}
}
// 1. Frage laden
spiel.fragen[spiel.aktFrage].anzeigen(this);
return view;
}
public void onClick(View v) {
int id = v.getId();
if (id == R.id.antwort1)
spiel.auswerten(1, this); // spielAuswerten(1);
else if (id == R.id.antwort2)
spiel.auswerten(2, this); // spielAuswerten(2);
else if (id == R.id.antwort3)
spiel.auswerten(3, this); // spielAuswerten(3);
else if (id == R.id.antwort4)
spiel.auswerten(4, this); // spielAuswerten(4);
}
}
Code:
package de.manuel.buchenfueranfaenger;
import android.app.Fragment;
import android.content.Context;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import de.manuel.buchenfueranfaenger.R.id;
class Spiellogik {
final int ANZAHL_FRAGEN = 8;
Frage[] fragen = new Frage[ANZAHL_FRAGEN];
byte aktFrage = 0;
int gewinnstufe = 0;
Context context;
Spiellogik() {
// Fragen erzeugen
/******** Disney *********/
fragen[0] = new Frage("Wie heißt der kleine Berater Pinocchios?",
"Jimmy, die Grille", "Jim Jarmusch", "Jiminiy Grille",
"Jimmy, die Zikade", 3);
fragen[1] = new Frage("Mit welchem Vogel fliegen Bernard und Bianca?",
"Airbus", "Adler", "Taube", "Albatros", 4);
fragen[2] = new Frage("Wer spricht den Albatros Orville?", "H. Juhnke",
"D. Hallervorden", "B. Pastewka", "S. Raab", 1);
fragen[3] = new Frage("Welcher Schauspieler spricht Prinz John?",
"G. Fröbe", "H. Rühmann", "P. Ustinov", "Ch. Lee", 3);
fragen[4] = new Frage(
"Welches war der erste abendfüllende Disney-Film?",
"Schneewittchen", "Fantasia", "Bambi", "Aristocats", 1);
fragen[5] = new Frage("Wo lebt Peter Pan?", "Nummerland", "Kummerland",
"Nimmerland", "Lummerland", 3);
fragen[6] = new Frage("Was raucht Roger aus 101 Dalmatiner?",
"Zigarette", "Gras", "Pfeife", "Zigarre", 3);
fragen[7] = new Frage(
"Welcher Disney-Film war der kommerziell erfolgreichste?",
"Aristocats", "Bambi", "Tarzan", "Schneewittchen", 4);
}
void auswerten(int schalter, Fragment quizActivity) {
if (!fragen[aktFrage].richtig(schalter)) { // falsch beantwortet
if (gewinnstufe == 0) {
Toast textToast = new Toast(context);
LinearLayout toastLayout = new LinearLayout(context);
toastLayout.setOrientation(LinearLayout.HORIZONTAL);
TextView text = new TextView(context);
text.setText("Leider nichts gewonnen. :-(");
toastLayout.addView(text);
textToast.setView(toastLayout);
textToast.setDuration(Toast.LENGTH_SHORT);
textToast.show();
/*
* Toast.makeText(quizActivity, "Leider nichts gewonnen. :-(",
* Toast.LENGTH_LONG).show();
*/
} else {
Toast textToast = new Toast(context);
LinearLayout toastLayout = new LinearLayout(context);
toastLayout.setOrientation(LinearLayout.HORIZONTAL);
TextView text = new TextView(context);
text.setText("Sie haben Gewinnstufe " + gewinnstufe
+ " erreicht! :-) - Glückwunsch!!!");
toastLayout.addView(text);
textToast.setView(toastLayout);
textToast.setDuration(Toast.LENGTH_SHORT);
textToast.show();
/*
*
* String str = "Sie haben Gewinnstufe " + gewinnstufe +
* " erreicht! :-) - Glückwunsch!!!";
* Toast.makeText(quizActivity, str, Toast.LENGTH_LONG).show();
*/
}
// Schalter deaktivieren
((Button) quizActivity.getActivity().findViewById(id.antwort1))
.setEnabled(false);
((Button) quizActivity.getActivity().findViewById(id.antwort2))
.setEnabled(false);
((Button) quizActivity.getActivity().findViewById(id.antwort3))
.setEnabled(false);
((Button) quizActivity.getActivity().findViewById(id.antwort4))
.setEnabled(false);
} else {
if (aktFrage < ANZAHL_FRAGEN - 1) {
fragen[++aktFrage].anzeigen(quizActivity);
gewinnstufe++;
((ProgressBar) quizActivity.getActivity().findViewById(
id.progressBar1)).setProgress(gewinnstufe);
} else {
gewinnstufe++;
((ProgressBar) quizActivity.getActivity().findViewById(
id.progressBar1)).setProgress(gewinnstufe);
String str = "Super, Sie haben alles richtig beantwortet!!!";
Toast textToast = new Toast(context);
LinearLayout toastLayout = new LinearLayout(context);
toastLayout.setOrientation(LinearLayout.HORIZONTAL);
TextView text = new TextView(context);
text.setText(str);
toastLayout.addView(text);
textToast.setView(toastLayout);
textToast.setDuration(Toast.LENGTH_SHORT);
textToast.show();
/*
* Toast.makeText(quizActivity, str, Toast.LENGTH_LONG).show();
*/
// Schalter deaktivieren
((Button) quizActivity.getActivity().findViewById(id.antwort1))
.setEnabled(false);
((Button) quizActivity.getActivity().findViewById(id.antwort2))
.setEnabled(false);
((Button) quizActivity.getActivity().findViewById(id.antwort3))
.setEnabled(false);
((Button) quizActivity.getActivity().findViewById(id.antwort4))
.setEnabled(false);
}
}
}
}