Erstes Android Projekt: Programmierung einer Fragebogen App

  • Hallo,


    ich bin Neuling bei der Android Programmierung und soll jetzt eine App programmieren, die folgendes tut:
    Per Zufall sollen 5 Fragen (von später 20) angezeigt werden, zu jeder Frage gibt es 4 Radiobutton.
    Dann gibt es einen "Weiter" Button, wenn er gedrückt wird, kommt die nächste per Zufall ausgesuchte Frage.
    Ausserdem soll das Ergebnis in einer csv-Datei gespeichert werden (FrageNummer, Antwort, Zeit, Datum, Antwortdauer).


    Ich glaube, ich habe den falschen Ansatz. Vielleicht könnt Ihr mir auf die Sprünge helfen.


    In die strings.xml habe ich die Fragen geschrieben:
    z.B.
    <string name="Frage1">Wie gern magst Du Mathematik?</string>
    <string name="Frage2">Wie sehr strengst Du Dich für Mathematik an?</string>


    In UmfrageActivity.java steht folgendes:


    TextView textfeld1;Button Knopf1;
    Random random = new Random();
    int zufallszahl = random.nextInt(5)+1;


    textfeld1 = (TextView) findViewById(R.id.textfeld1);
    Knopf1 = (Button) findViewById(R.id.button1);


    String zufallsfrage = "R.string.Frage"+zufallszahl;


    String string = getString(zufallsfrage);
    textfeld1.setText(string);


    Scheinbar lassen sich die Fragen so nicht auslesen.
    Ein String string = getString(R.string.Frage3); funktioniert natürlich. Der Wert der Variablen zufallsfrage ist ja R.string.Frage3 oder eine andere Frage je nach Zufallszahl.Ich vermute, ich muss die Fragen aus der xml Datei erstmal übertragen, z.B. ein Arraylist?


    Ich hoffe, Ihr könnt mir weiterhelfen.


    LG Bea

  • Hallo,


    ich habe das Ganze jetzt umgeschrieben.
    strings.xml:
    <string-array name="fragenliste">
    <item>Wie gern magst Du Mathematik?</item>
    <item>Wie sehr strengst Du Dich für Mathematik an?"</item>
    <item>Hast Du Angst vor Klassenarbeiten in Mathematik?</item>
    <item>Ist Mathematikunterricht schwierig für Dich?</item>
    <item>Magst Du Deinen Mathelehrer?</item>
    </string-array>


    UmfrageActivity.java
    package inklusion.umfrage;


    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.TextView;
    import java.util.Random;
    import static inklusion.umfrage.R.array.fragenliste;



    public class UmfrageActivity extends AppCompatActivity {


    String[] fragenArray;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_umfrage);


    fragenArray = getResources().getStringArray(fragenliste);
    updateTextView();
    }


    public void setOnClickListener(View v)
    {
    updateTextView();
    }


    private void updateTextView() {
    TextView textfeld1 = (TextView)findViewById(R.id.frage);
    Random random = new Random();
    int zufallszahl = random.nextInt(fragenArray.length);


    textfeld1.setText(fragenArray[zufallszahl]);
    }


    }


    Damit werden jetzt per Zufall Fragen ausgegeben.
    Wie erreiche ich, das keine Fragen doppelt angezeigt werden?


    Viele Grüße,
    Bea

  • Da gibts mehrere Möglichkeiten, je nachdem wie die App aufgebaut ist. Wenn das nur für die gleiche Activity wichtig ist, könntest du die Zufallszahl in eine List<int> eintragen und überprüfen ob die nächste schon enthalten ist(mit Liste.contain(zufallszahl))).
    Falls das Activity übergreifend stattfinden muss, wäre die einfachste Möglichkeit die Zufallszahlen in Shared Preferences als CSV zu schreiben und wieder auszulesen, in eine Liste zu konvertieren und wieder checken ob die Zahl schon vorhanden ist.

  • Ja, es ist eine Activity.
    Ich habe es doch noch anders gemacht. ;)


    public String ZufallsFrage()
    {
    Random rnd = new Random();
    int zufall = rnd.nextInt(fragenliste.size());
    String q;


    // if (fragenliste.isEmpty())
    if (fragenliste.size() == 0)
    {
    q = "Alle Fragen beantwortet!";
    }
    else {
    q = fragenliste.get(zufall);
    fragenliste.remove(zufall);
    }


    return q;
    }


    Da ganze funktioniert, solange Fragen in der Liste sind. Sobald die Liste leer ist, stürzt die App ab und ich habe keine Ahnung, warum. Hat jemand eine Idee?LG

  • Ich habe ja jetzt schon fleißig weitergemacht. ;)
    Hatte das Problem aber auch in der Weiterentwicklung.
    Ich würde sagen, es war einfach eine Variable, die nur in der onClick Methode deklariert wurde.
    Die musste in der Klasse bekannt gemacht werden. Und jetzt gehts. :thumbup:

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!