Auf Auswahl des Users warten

L

Lainio

Ambitioniertes Mitglied
3
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?
 
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.
 
Wenn ich break einfüge steht als Fehlermeldung:

"break outside switch or loop"
 
Hab mich verschrieben. Ich meinte "return".
 
return ohne true oder false etc.? einfach nur return?
 
Das hängt von deiner Methodensignatur ab.
 
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;
        }
    }
 
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).
 
  • Danke
Reaktionen: Lainio
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! :)
 

Ähnliche Themen

M
  • MikelKatzengreis
Antworten
5
Aufrufe
132
swa00
swa00
B
Antworten
4
Aufrufe
495
bb321
B
Zurück
Oben Unten