Android Nach Buttonclick neu laden

Timotion.

Mitglied
Hi:)
Vorweg, ich bin ein wirklicher Anfänger, die dinge die ich bis jetzt weiß habe ich mir durch Bücher und google beigebracht. Nachdem ich mich mit Java auseinandergesetzt habe wollte ich mich parallel mit der Entwicklung auf Android befassen.

Meine Idee war, eine App zu erstellen die "Quizduell" ähnelt. Also eine zufällige Frage mit 4 Antwortmöglichkeiten auf Buttons, wobei die Position der Richtigen Antwort auch zufällig ist. Soweit bin ich gekommen, allerdings schaffe ich es nicht das sich nach dem Buttonklick eine neue frage läd. Ich habe es dann mit einer while-schleife um den code probiert, allerdings blieb dann mein Fenster komplett schwarz. Wahrscheinlich weil die Schleife nirgends angehalten wird, sondern unendlich oft von vorne beginnt. Danach habe ich (durch google inspiriert) eine schleife in dieser Schleife gemacht, die das Programm aufhalten sollte und nach einem Buttonklick beendet wird. Allerdings wieder nur ein schwarzes Fenster.

Könnt ihr mir sagen wie ich das Problem lösen kann? Wäre sehr dankbar über Codeverbesserung, Stichworte und alles was nützlich sein kann. Außerdem noch eine Frage, weshalb lassen sich in onClickListener nur finale Variablen benutzen?

Habt ihr eventuell noch gute Websites, Tutorials oder Bücher die ihr empfehlen würdet und die sich direkt auf den Umgang mit android beziehen? Ist es sinnvoll mit der entwicklerseite direkt zu lernen?

Danke für eure Hilfe:)

Anbei mein code; außer dieser klasse gibt es noch eine für Fragen, Antworten, einer Zufallszahl und einer prüfungsklasse die mir sagt ob die richtige auswahl getroffen wurde.

[Java]
package com.quizapp.quizapp;

import android.app.*;
import android.os.*;
import android.view.*;
import android.widget.*;
import java.util.*;
import android.view.View.*;

public class MainActivity extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

//Bekomme Buttons und objekte = = = = = = = = = = = = =
final Button buttonol =(Button) findViewById(R.id.buttonol);
final Button buttonor =(Button) findViewById(R.id.buttonor);
final Button buttonul =(Button) findViewById(R.id.buttonul);
final Button buttonur =(Button) findViewById(R.id.buttonur);
TextView meinefragebox =(TextView) findViewById(R.id.fragetext);
fragen meinefrage = new fragen();
zuzahlen zufallszahl = new zuzahlen();
meinefrage.setfragen();
antworten antworter = new antworten();
antworter.setant();
final pruefen pruefung = new pruefen();
boolean spiellaeuft = true;
final TextView ergebntxt = (TextView) findViewById(R.id.ergebnisanzeige);
final TextView punktzahl =(TextView) findViewById(R.id.pktzahl);
int punkte = 0;
// = = = = = = = = = = = = = = = = = = = = = = = = =
int bu;
bu = meinefrage.anzahlfragen();
int zahl = zufallszahl.getzahl(bu);
String diefrage = meinefrage.getfragen(zahl);
meinefragebox.setText(diefrage);
int zuege = 1;
//while(spiellaeuft){
//if(zuege>0){
//=== Antworten b3kommen
ArrayList<String> dieantworten = new ArrayList<String>();
dieantworten = antworter.getantworten(zahl);

final String richtigeantwort = dieantworten.get(0);
String falschantwort1 = dieantworten.get(1);
String falschantwort2 = dieantworten.get(2);
String falschantwort3 = dieantworten.get(3);
int min = 0;
int max = 4;
int wielange = 4;

// Den Buttons die Antwortmöglichkeiten zuweisen
int position = (int) (Math.random()*max);
max = max-1;
buttonol.setText(dieantworten.get(position));
dieantworten.remove(position);
//===
position = (int) (Math.random()*max);
max = max-1;
buttonor.setText(dieantworten.get(position));
dieantworten.remove(position);
//===
position = (int) (Math.random()*max);
max = max-1;
buttonul.setText(dieantworten.get(position));
dieantworten.remove(position);
//===
position = (int) (Math.random()*max);
max = max-1;
buttonur.setText(dieantworten.get(position));
dieantworten.remove(position);
int zt = 5;
//========Den Buttons ihren zweck geben
int solange = 1;
ergebntxt.setText("");

buttonol.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View p1)
{

final String a = (String) buttonol.getText();
boolean istrichtig = pruefung.pruefdich(richtigeantwort, a);
if(istrichtig){
ergebntxt.setText("Die antwort war richtig!");

}else{
ergebntxt.setText("Leider Falsch");
}
}
});

buttonor.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View p1)
{
final String a = (String) buttonor.getText();
boolean istrichtig = pruefung.pruefdich(richtigeantwort, a);
if(istrichtig){
ergebntxt.setText("Die antwort war richtig!");

}else{
ergebntxt.setText("Leider Falsch");
}
}
});

buttonul.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View p1)
{
final String a = (String) buttonul.getText();
boolean istrichtig = pruefung.pruefdich(richtigeantwort, a);
if(istrichtig){
ergebntxt.setText("Die antwort war richtig!");

}else{
ergebntxt.setText("Leider Falsch");
}
}
});
buttonur.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View p1)
{
final String a = (String) buttonur.getText();
boolean istrichtig = pruefung.pruefdich(richtigeantwort, a);
if(istrichtig){
ergebntxt.setText("Die antwort war richtig!");

}else{
ergebntxt.setText("Leider Falsch");

}
}
});
//_____________


if(ergebntxt.getText().equals("Leider Falsch")){
solange = 0;
zt =0;
}else if(ergebntxt.getText().equals("Die antwort war richtig!")){
zt = 0;
solange = 0;
}

l

};

//ergebntxt.setText("Spiel zuende");
//}//ende der while spiellaeuft schleife

}[/code]
 
Zuletzt bearbeitet:

Flo.

Mitglied
machs dir doch leicht für jede Fragenrunde also jeweils 4 Fragen oder mehr kannst du doch nee neue Activity machen und
mit ner if abrage überprüst du es dannach kannst du ja weiter zur nächsten activity springen
 

Timotion.

Mitglied
Mit weiteren acticities hab ich mich bisher nochnicht auseinander gesetzt, werde ich mir mal ansehen vielen dank:) Aber habe ich da dann nicht wieder das selbe problem, wenn ich in einer davon 4 Fragen anzeigen lassen will?
 

Timotion.

Mitglied
Ich habs jetzt mit einer klasse versucht, die eine methode hat welche mit intend nocheinmal die mainactivity läd.Die Methode rufe ich aus einem onclicklistener auf. Leider bekomme ich immer eine nullpointerexception in zeile 19 der Neustart-klasse. Ich weiss echt nichtmehr weiter:/ nebenbei, kann mir jemand kurz erklären was ich unter "context" genau zu verstehen habe? Hier nochmal die Mainactivity:

[Java] package com.quizapp.quizapp;

import android.app.*;
import android.content.*;
import android.graphics.drawable.*;
import android.os.*;
import android.view.*;
import android.view.View.*;
import android.widget.*;
import java.util.*;
import java.io.*;

public class MainActivity extends Activity
{

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

//Bekomme Buttons und objekte = = = = = = = = = = = = =
final Button buttonol =(Button) findViewById(R.id.buttonol);
final Button buttonor =(Button) findViewById(R.id.buttonor);
final Button buttonul =(Button) findViewById(R.id.buttonul);
final Button buttonur =(Button) findViewById(R.id.buttonur);
final Button buttonbg = (Button) findViewById(R.id.buttonhintergrund);
TextView meinefragebox =(TextView) findViewById(R.id.fragetext);
fragen meinefrage = new fragen();
final neustart nochmalneu = new neustart();

zuzahlen zufallszahl = new zuzahlen();
meinefrage.setfragen();
antworten antworter = new antworten();
antworter.setant();
final pruefen pruefung = new pruefen();
boolean spiellaeuft = true;
final TextView ergebntxt = (TextView) findViewById(R.id.ergebnisanzeige);
final TextView punktzahl =(TextView) findViewById(R.id.pktzahl);
int punkte = 0;
final Drawable bild2 = getResources().getDrawable(R.drawable.farbverlauf);
final Drawable bild = getResources().getDrawable(R.drawable.swhintergrund);
final LinearLayout meinlayout = (LinearLayout) findViewById(R.id.mainlayout);
// = = = = = = = = = = = = = = = = = = = = = = = = =

spiellaeuft=false;
int bu;
bu = meinefrage.anzahlfragen();
int zahl = zufallszahl.getzahl(bu);
String diefrage = meinefrage.getfragen(zahl);
meinefragebox.setText(diefrage);
int zuege = 1;
//while(spiellaeuft){
//if(zuege>0){
//=== Antworten b3kommen
ArrayList<String> dieantworten = new ArrayList<String>();
dieantworten = antworter.getantworten(zahl);

final String richtigeantwort = dieantworten.get(0);
String falschantwort1 = dieantworten.get(1);
String falschantwort2 = dieantworten.get(2);
String falschantwort3 = dieantworten.get(3);
int min = 0;
int max = 4;
int wielange = 4;

// Den Buttons die Antwortmöglichkeiten zuweisen
int position = (int) (Math.random()*max);
max = max-1;
buttonol.setText(dieantworten.get(position));
dieantworten.remove(position);
//===
position = (int) (Math.random()*max);
max = max-1;
buttonor.setText(dieantworten.get(position));
dieantworten.remove(position);
//===
position = (int) (Math.random()*max);
max = max-1;
buttonul.setText(dieantworten.get(position));
dieantworten.remove(position);
//===
position = (int) (Math.random()*max);
max = max-1;
buttonur.setText(dieantworten.get(position));
dieantworten.remove(position);
int zt = 5;
//========Den Buttons ihren zweck geben
int solange = 1;
ergebntxt.setText("");

buttonol.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View p1)
{

final String a = (String) buttonol.getText();
boolean istrichtig = pruefung.pruefdich(richtigeantwort, a);
if(istrichtig){
ergebntxt.setText("Die antwort war richtig!");

}else{
ergebntxt.setText("Leider Falsch");
}
}
});

buttonor.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View p1)
{
nochmalneu.neuerstarte();

final String a = (String) buttonor.getText();
boolean istrichtig = pruefung.pruefdich(richtigeantwort, a);


if(istrichtig){
ergebntxt.setText("Die antwort war richtig!");

}else{
ergebntxt.setText("Leider Falsch");
}
}
});

buttonul.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View p1)
{
final String a = (String) buttonul.getText();
boolean istrichtig = pruefung.pruefdich(richtigeantwort, a);
if(istrichtig){
ergebntxt.setText("Die antwort war richtig!");

}else{
ergebntxt.setText("Leider Falsch");
}
}
});
buttonur.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View p1)
{
final String a = (String) buttonur.getText();
boolean istrichtig = pruefung.pruefdich(richtigeantwort, a);
if(istrichtig){
ergebntxt.setText("Die antwort war richtig!");

}else{
ergebntxt.setText("Leider Falsch");

}
}

});
if(!"".equals(ergebntxt)){spiellaeuft=true;}
//_____________
buttonbg.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View p1)
{
// TODO: Implement this method
if(meinlayout.getBackground().equals(bild2)){
meinlayout.setBackground(bild);}else{
meinlayout.setBackground(bild2);
};
}
});


if(ergebntxt.getText().equals("Leider Falsch")){
solange = 0;
zt =0;
}else if(ergebntxt.getText().equals("Die antwort war richtig!")){
zt = 0;
solange = 0;
}

//while(zt > 0){
// int xxx = 1;
// xxx++;
//};

}



//ergebntxt.setText("Spiel zuende");
//}//ende der while spiellaeuft schleife

}[/code]

Und die neustartklasse mit dem intend:
[Java] package com.quizapp.quizapp;
import android.app.*;
import android.content.*;
import android.os.*;

class neustart extends MainActivity
{

@Override
public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState)
{
// TODO: Implement this method
super.onCreate(savedInstanceState, persistentState);
setContentView(R.layout.main);
neuerstarte();}

public void neuerstarte(){

Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
}
}[/code]

Wäre echt dankbau für hilfe :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
AllBlack Auf der Suche nach einem App-Entwickler Android & Cross-Platform Mobile Apps 1
J Android zugrif auf Thread nach Handy drehen. Android & Cross-Platform Mobile Apps 10
AGW App schließt nach 2 Sekunden Android & Cross-Platform Mobile Apps 2
ruutaiokwu Android Daten von "Activity A" nach "Activity B" umleiten? Android & Cross-Platform Mobile Apps 13
A Android-Studio: 2. Layout nach kurzer Zeit aufzeigen Android & Cross-Platform Mobile Apps 2
B Profilpic wird nach anmeldung nicht angezeigt. Android & Cross-Platform Mobile Apps 2
J BLOB nach dem Download unbrauchbar Android & Cross-Platform Mobile Apps 0
B App schließt nach Start. Android & Cross-Platform Mobile Apps 12
J Android Nach Appsprachenänderung die Systemsprache ermitteln Android & Cross-Platform Mobile Apps 2
G App wird nach Installation auf Smartphone beendet Android & Cross-Platform Mobile Apps 1
B Android wie kann ich in einer xml nach bestimme item suchen (DOM) Android & Cross-Platform Mobile Apps 7
Fischkralle Android Nach Textdateien in Ordner suchen Android & Cross-Platform Mobile Apps 5
V Android Fehlermeldung beim Öffnen von Eclipse nach Installation der Android Erweiterung Android & Cross-Platform Mobile Apps 4
B Android Activity nach gedrückte Returntaste weiterlaufen lassen Android & Cross-Platform Mobile Apps 2
B Android ringProgressDialog nach Erfolg Button einfärben Android & Cross-Platform Mobile Apps 2
N PriceScannerApp: warum wird nach dem Scannen Display gleich schwarz? Android & Cross-Platform Mobile Apps 4
L Android Bildschirm bleibt dunkel nach neustarten der App nach betätigen des Home-Buttons Android & Cross-Platform Mobile Apps 3
N Android EditText.setError() funktioniert nicht nach Rotation Android & Cross-Platform Mobile Apps 1
B Android Button erstellen nach Vorlage Android & Cross-Platform Mobile Apps 4
L Android Button mit Pfeil nach rechts Android & Cross-Platform Mobile Apps 1
M Android App startet nach Tastensperre neu Android & Cross-Platform Mobile Apps 3
P Android Nach Animation Layout auf alten Platz Android & Cross-Platform Mobile Apps 3
G Werteübergabe nach unbestimmter Zeit Android & Cross-Platform Mobile Apps 28
A Fehlermeldung nach Neuinstallation von Eclipse/bestehenden Projekten... Android & Cross-Platform Mobile Apps 2
E Android App stürzt nach Modifizierung ab Android & Cross-Platform Mobile Apps 2
N Textview macht immer nach einem Beistrich einen Abstand Android & Cross-Platform Mobile Apps 6
K Apps durchsuchen nach verwendeter Methode Android & Cross-Platform Mobile Apps 4
M Android MediaRecorder - Crash nach 2. Start Android & Cross-Platform Mobile Apps 2
S rms recordstore bleibt nach schießen der anwengung nicht erhalten Android & Cross-Platform Mobile Apps 4
M Text in txt-Datei schreiben und nach ABC sortieren? Android & Cross-Platform Mobile Apps 2
H FileConnection: Frage nach Dateisystem-Zugriff unterdrücken Android & Cross-Platform Mobile Apps 5
K suche nach der richtigen dokumentationh Android & Cross-Platform Mobile Apps 2
S ein String nach vorgegebenen Zeichen teilen Android & Cross-Platform Mobile Apps 3
L Ungültiges Java-Archiv (jar) nach Programmentwicklung Android & Cross-Platform Mobile Apps 4
N Zugriff auf TextView in ListItem via ButtonClick Android & Cross-Platform Mobile Apps 4
I Android ListView, Werte aktualisieren ohne die Liste komplett neu zu laden Android & Cross-Platform Mobile Apps 5
W Bild aus dem Internet in View bzw. ImageView laden (Fragment) Android & Cross-Platform Mobile Apps 2
W Firestore String in Apps Laden Android & Cross-Platform Mobile Apps 10
lolcore android studio: fehler bei laden des emulators Android & Cross-Platform Mobile Apps 10
Meeresgott Android Best Practices zum Laden von Dateien Android & Cross-Platform Mobile Apps 0
B Android Textdatei laden (klappt nicht) Android & Cross-Platform Mobile Apps 4
F Android Effizientes Laden von Dateien Android & Cross-Platform Mobile Apps 8
T Hintergrund nur zur hälfte laden... Android & Cross-Platform Mobile Apps 6
N Android Display nicht löschen bzw. neu laden Android & Cross-Platform Mobile Apps 2
D Android Neue Activity im TabWidget laden Android & Cross-Platform Mobile Apps 8
P Android Fragen reihenfolge speichern / laden Android & Cross-Platform Mobile Apps 2
U [Android] Eine Datei aus Jar-Archiv laden Android & Cross-Platform Mobile Apps 4
B Java ME Font laden? Android & Cross-Platform Mobile Apps 6
P dateien laden nur aus jar? Android & Cross-Platform Mobile Apps 7

Ähnliche Java Themen

Neue Themen


Oben