Philip H Geschrieben 24. September 2012 Geschrieben 24. September 2012 Hallo alle zusammen. Ich bin gerade dabei, ein kleines Programm für mein Android Smartphone zu schreiben, aber irgendwie funktioniert nicht alles so, wie es sollte... Ich will eigentlich aus einem Wert, den der Benutzer eingeben kann, zwei weitere Werte berechnen und diese dann anzeigen. Allerdings friert das Programm immer ein, wenn ich den Button zum Berechnen klicke. Code: public void Umrechnung (View view){ double zahl1; double Ergebnis1; double Ergebnis2; EditText Feld1 = (EditText)findViewById(R.id.editText1); EditText FeldErgebnis1 = (EditText)findViewById(R.id.editText4); EditText FeldErgebnis2 = (EditText)findViewById(R.id.editText5); if (Feld1.getText().toString().length() == 0){ return; } zahl1 = Integer.parseInt(Feld1.getText().toString()); Ergebnis1 = (zahl1 + 273.15); Ergebnis2 = (((zahl1 + 273.15) * 1.8) + 32); FeldErgebnis1.setText(String.valueOf(Ergebnis1)); FeldErgebnis2.setText(String.valueOf(Ergebnis2)); } public void reset5 (View view){ EditText Feld1 = (EditText)findViewById(R.id.editText1); EditText FeldErgebnis1 = (EditText)findViewById(R.id.editText4); EditText FeldErgebnis2 = (EditText)findViewById(R.id.editText5); Feld1.setText(String.valueOf(0)); FeldErgebnis1.setText(String.valueOf(0)); FeldErgebnis2.setText(String.valueOf(0)); } public void Umrechnung2 (View view){ double zahl1; double Ergebnis1; double Ergebnis2; EditText Feld1 = (EditText)findViewById(R.id.editText2); EditText FeldErgebnis1 = (EditText)findViewById(R.id.editText6); EditText FeldErgebnis2 = (EditText)findViewById(R.id.editText7); if (Feld1.getText().toString().length() == 0){ return; } zahl1 = Integer.parseInt(Feld1.getText().toString()); Ergebnis1 = (zahl1 + 273.15); Ergebnis2 = ((Ergebnis1 * 1.8) + 32); FeldErgebnis1.setText(String.valueOf(Ergebnis1)); FeldErgebnis2.setText(String.valueOf(Ergebnis2)); } public void reset6 (View view){ EditText Feld1 = (EditText)findViewById(R.id.editText2); EditText FeldErgebnis1 = (EditText)findViewById(R.id.editText6); EditText FeldErgebnis2 = (EditText)findViewById(R.id.editText7); Feld1.setText(String.valueOf(0)); FeldErgebnis1.setText(String.valueOf(0)); FeldErgebnis2.setText(String.valueOf(0)); } public void Umrechnung3 (View view){ double zahl1; double Ergebnis1; double Ergebnis2; EditText Feld1 = (EditText)findViewById(R.id.editText3); EditText FeldErgebnis1 = (EditText)findViewById(R.id.editText8); EditText FeldErgebnis2 = (EditText)findViewById(R.id.editText9); if (Feld1.getText().toString().length() == 0){ return; } zahl1 = Integer.parseInt(Feld1.getText().toString()); Ergebnis1 = (zahl1 + 273.15); Ergebnis2 = ((Ergebnis1 * 1.8) + 32); FeldErgebnis1.setText(String.valueOf(Ergebnis1)); FeldErgebnis2.setText(String.valueOf(Ergebnis2)); } public void reset7 (View view){ EditText Feld1 = (EditText)findViewById(R.id.editText3); EditText FeldErgebnis1 = (EditText)findViewById(R.id.editText8); EditText FeldErgebnis2 = (EditText)findViewById(R.id.editText9); Feld1.setText(String.valueOf(0)); FeldErgebnis1.setText(String.valueOf(0)); FeldErgebnis2.setText(String.valueOf(0)); } Das Programm soll im Grunde eine Temperatur in eine andere Umrechnen (z.B: °C in °F oder °F in °K,...). Das Eingabefeld sieht wie folgt aus: 3 mal je 3 Felder für eingabe und Resultatausgabe der Temparaturen (°C, °F, °K). Darunter die drei Button um das ganze zu berechnen und schliesslich noch einen Reset Button. Zum Reset Button habe ich auch noch eine kleine Frage: Wie schaffe ich es, dass der Reset Button mehrere Befehle durch einmaliges Klicken ausführt?; ich habs schon so probiert: -->android: onClick="reset5, reset6, reset7"; -->android: onClick="reset5"; android: onClick="reset6"; android: onClick="reset7"; (Im Code habe ich zwischen : und o natürlich keinen Lehrschlag, aber hier lässt sich das nicht vermeiden da ansonsten das passiert: android:onClick="..." ) Aber keine der beiden Methoden hat funktioniert?, wie muss ich den Code veränder, damit der Button alle Felder resetet? Vielen Dank für eure Antworten und Bemühungen schon im Voraus. Mit freundlichen Grüssen Philip Helbling Zitieren
Lausig Geschrieben 24. September 2012 Geschrieben 24. September 2012 Mach die Initiierung der Objekte am Anfang der Klasse. Also etwa so: public class MyActivity extends Activity { //hier die Objekte initiieren TextView tv1; EditText et1; @Override public void onCreate(...){ //hier die Objekte erstellen, Views finden, Variablenwert setzen... } //weitere Methoden } Geht das jetzt? Sonst schicke mir doch mal dein Android-Projekt, per PN kriegst du wenn gewünscht meine E-Mail. ;) Fragen beantworte ich natürlich immer gerne. Zur Button-Frage: Zum Reset Button habe ich auch noch eine kleine Frage: Wie schaffe ich es, dass der Reset Button mehrere Befehle durch einmaliges Klicken ausführt?; ich habs schon so probiert: -->android: onClick="reset5, reset6, reset7"; -->android: onClick="reset5"; android: onClick="reset6"; android: onClick="reset7"; In deinem Code kann ich keinen Button finden. Wenn du diese jedoch wie die EditText erstellt hast, kannst du dem Button einen OnClickListener implementieren und unendlich viele Befehle dran knüpfen: button1.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v){ //unendlich viele Befehle.... :D Befehl1; Befehl2; Befehl3; ... } }); Ich nehme mal an, dein gepostetes Beispiel ist nicht vollständig (wo ist die Activity-Class und deren OnCreate?). Des weiteren hat es noch einige Fehler.:rolleyes: Zitieren
Philip H Geschrieben 25. September 2012 Autor Geschrieben 25. September 2012 Hallo Vielen Dank für deine Antwort. Ich werde deine Tipps morgen mal ausprobieren, und schauen, ob's dann funktioniert. MFG Philip Helbling Zitieren
Christian Thomann Geschrieben 30. September 2012 Geschrieben 30. September 2012 Stellenanbieter: Können Sie für uns in JAVA programmieren? Programmierer: Okay, wenn Sie die Reisekosten übernehmen! Ironieren bis zum Sarkasmus! :p Nichts für Hoppla! Aber das musste einfach hier raus! Zitieren
Philip H Geschrieben 9. Oktober 2012 Autor Geschrieben 9. Oktober 2012 Ja, habs jetzt geschafft, jetzt bin ich nur noch an den feinabstimmungen und am Design... =) Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.