Auf Auswahl des Users warten

  • 8 Antworten
  • Neuester Beitrag
Diskutiere Auf Auswahl des Users warten im Android App Entwicklung im Bereich Betriebssysteme & Apps.
L

Lainio

Ambitioniertes Mitglied
Hallo liebe Leute,

ich weiß nicht ob es ein einfaches Thema ist. Jedoch habe ich ein Problem.

Ich habe ein Registrierungsformular wo eine Auswahl der Anrede möglich ist.

Sollte der User jetzt keine Auswahl machen erscheint bisher ein Toast mit der Meldung das eine Anrede ausgewählt werden soll.

So sieht das bisher aus:

Code:
radioMaleButton = (RadioButton) findViewById(R.id.male);
            radioFemaleButton = (RadioButton) findViewById(R.id.female);

            if(radioMaleButton.isChecked()) {
                sex = 1;
            }
            else if (radioFemaleButton.isChecked()) {
                sex = 2;
            }
            else {
                Toast.makeText(context,"Bitte Anrede auswählen",Toast.LENGTH_SHORT).show();
            }

In der else Zeile erscheint die/der/das Toast mit der Meldung. Nach der Zeile würde das Programm trotzdem weitermachen, was nicht richtig ist, da eine Anrede zwingend erforderlich ist. Was kann ich da einfügen?
 
Thyrion

Thyrion

Ehrenmitglied
Wie wäre es mit "return;" ?


Ohne mehr von dem Code zu sehen, ist es aber schwer zu sagen, wie genau das zu machen ist.
 
L

Lainio

Ambitioniertes Mitglied
Wenn ich break einfüge steht als Fehlermeldung:

"break outside switch or loop"
 
Thyrion

Thyrion

Ehrenmitglied
Hab mich verschrieben. Ich meinte "return".
 
L

Lainio

Ambitioniertes Mitglied
return ohne true oder false etc.? einfach nur return?
 
Thyrion

Thyrion

Ehrenmitglied
Das hängt von deiner Methodensignatur ab.
 
L

Lainio

Ambitioniertes Mitglied
Die Methode sieht in etwa so aus:

Code:
class RegistrationTask extends AsyncTask<String, String, String> {

        @Override
        protected String doInBackground(String... strings) {
            Context context = getApplicationContext();
            int sex = 0;
            String returnString = "";
            final HttpClient httpClient = new DefaultHttpClient();
            String URLFirstName = regFirstName.getText().toString();
            String URLLastName = regLastName.getText().toString();
            String URLCompany = regCompany.getText().toString();
            String URLEmail = regEmail.getText().toString();
            String URLPassword = regPassword.getText().toString();
            String URLPasswordRepeat = regPasswordrepeat.getText().toString();

            //Überprüfung auf Anrede

            radioMaleButton = (RadioButton) findViewById(R.id.male);
            radioFemaleButton = (RadioButton) findViewById(R.id.female);

            if(radioMaleButton.isChecked()) {
                sex = 1;
            }
            else if (radioFemaleButton.isChecked()) {
                sex = 2;
            }
            else {
                Toast.makeText(context,"Bitte Anrede auswählen",Toast.LENGTH_SHORT).show();

            }

            //Überprüfen ob Internet vorhanden
            if(cd.isConnectingToInternet()) {
                String URL = "www.example.com/index.php?l=" + URLEmail + "&pwd=" + URLPassword + "&pwd2=" + URLPasswordRepeat +
                        "company=" + URLCompany + "name_last" + URLLastName + "name_first=" + URLFirstName + "&sex=" + sex + "&UUID=EAE19E88-ED62-1414-830C-D0029001C523";
                try {
                    //Antwort vom Server
                    HttpGet httpGet = new HttpGet(URL);
                    HttpResponse httpResponse = httpClient.execute(new HttpGet(URL));
                    //Empfange Daten
                    returnString = EntityUtils.toString(httpResponse.getEntity());
                } catch (ClientProtocolException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return returnString;
        }
    }
 
Thyrion

Thyrion

Ehrenmitglied
Da du einen String erwartest, gib eben einen String zurück. Die Frage ist nur, ob die aufrufende Instanz an der Stelle eben damit was anfangen kann.

Aber:
Ich würde die Überprüfung, ob alle Daten korrekt sind machen, bevor überhaupt der Task erzeugt und gestartet wird (mal davon abgesehen, dass ich das in einem eigenen Objekt mit entsprechender Logik auslagern würde).

Desweiteren halte ich es für eine denkbar schlechte Idee, Passwörter im Klartext per URL-Parameter zu übergeben, zumal noch die URLCodierung fehlt (Beispiel: Leerzeichen -> %20 - Umlaute und Sonderzeichen machen da gerne Ärger).
 
L

Lainio

Ambitioniertes Mitglied
Das Passwörter als Klartext nicht als solche übermittelt werden ist mir klar. Die implementierung der Codierung erfolgt aber dafür später.

Du hast recht. Ich sollte die Überprüfung vorher machen und im Asynctask nur die Befehle stehen lassen die eine Internetverbindung erfordern. Ich weiß aber leider noch nicht ob mein Problem damit gelöst ist. Ich will, wenn der User keine Anrede angibt, dass das Programm darauf wartet bzw. zurück springt bis der User eine Anrede ausgewählt hat. Solange er die nicht auswählt wird nicht fortgefahren.

Ich hoffe es ist in etwa verständlich was ich für ein Problem habe.

Vielen Dank für deine Tipps bisher! :)