AW: Leere EditTexts abfangen
Zeig bitte mal den ganzen Code. Woher zB. hast du die Variable laufzeit? Zudem sagt dir der Debugger, wo der Fehler aufgetreten ist.
Nebenbei würde ich dir empfehlen, etwas auf deinen Stil zu achten und dir mal einen Styleguide durchzulesen. Das wird dir viel helfen.
AW: Leere EditTexts abfangen
Hi, danke für deine antwort. woher ich die variable laufzeit habe sieht man im angehängten quelltext ;) mit dem debugger muss ich mich nochmal einfuchsen. bin da noch nicht ganz durchgestiegen. kann zwar sehen, wie das ergebnis sich ändert, wenn ich alle editTexts ausgefüllt habe. sobald ich aber "laufzeit" leer lasse, kann ich dem debugger nicht mehr folgen und finde folglich den fehler auch nicht :-/ ;)
bzgl des stils werde ich mich mal belesen.
Code:
package com.test.amortisationsrechner;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class Amortisationsrechner extends Activity implements OnClickListener {
private Button BUTTON_berechne;
private EditText ET_verbrauchAltesGeraet;
private EditText ET_verbrauchNeuesGeraet;
private EditText ET_laufzeit;
private EditText ET_preis;
private EditText ET_preisGeraet;
private TextView TV_dauer;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_amortisationsrechner);
BUTTON_berechne = (Button) findViewById(R.id.button1);
ET_verbrauchAltesGeraet = (EditText) findViewById(R.id.editText1);
ET_verbrauchNeuesGeraet = (EditText) findViewById(R.id.editText2);
ET_laufzeit = (EditText) findViewById(R.id.editText3);
ET_preisGeraet = (EditText) findViewById(R.id.editText4);
ET_preis = (EditText) findViewById(R.id.editText5);
TV_dauer = (TextView) findViewById(R.id.textView6);
BUTTON_berechne.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_amortisationsrechner, menu);
return true;
}
@Override
public void onClick(View view) {
// TODO Auto-generated method stub
if (view == BUTTON_berechne) {
Float zahl = (float) 0.00;
Float verbrauchAltesGeraet, verbrauchNeuesGeraet, laufzeit, preis, preisGeraet, gesparteEuroProTag;
preis = Float.valueOf(ET_preis.getText().toString());
preisGeraet = Float.valueOf(ET_preisGeraet.getText().toString());
verbrauchAltesGeraet = Float.valueOf(ET_verbrauchAltesGeraet
.getText().toString());
verbrauchNeuesGeraet = Float.valueOf(ET_verbrauchNeuesGeraet
.getText().toString());
laufzeit = Float.valueOf(ET_laufzeit.getText().toString());
// Toast.makeText(Amortisationsrechner.this, "All Fields Required.",
// Toast.LENGTH_SHORT).show();
if (checkEmpty(ET_laufzeit) == true) {
Toast.makeText(Amortisationsrechner.this,
"laufzeit ausgefüllt", Toast.LENGTH_SHORT).show();
gesparteEuroProTag = ((verbrauchAltesGeraet - verbrauchNeuesGeraet)
* laufzeit * preis) / 1000;
zahl = preisGeraet / (gesparteEuroProTag * 365);
zahl = (float) Math.round(zahl * 100) / 100;
TV_dauer.setText("Amortisiert in " + zahl + " Jahr(en)");
} else {
Toast.makeText(Amortisationsrechner.this,
"laufzeit nicht ausgefüllt", Toast.LENGTH_SHORT).show();
}
}
}
private boolean checkEmpty(EditText etText) {
if (etText.getText().toString().trim().length() > 0)
return true;
else
return false;
}
}
HTML-Code:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ag_verbrauch" />
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="number" >
<requestFocus />
</EditText>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ng_verbrauch" />
<EditText
android:id="@+id/editText2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="number" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/laufzeit" />
<EditText
android:id="@+id/editText3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="number" />
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tv_preis" />
<EditText
android:id="@+id/editText4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="number" />
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/strompreis" />
<EditText
android:id="@+id/editText5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="numberDecimal"
android:text="0.25" />
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/bt_berechnen" />
<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" />
</LinearLayout>
gru0 ernst august
AW: Leere EditTexts abfangen
Hi
Du versuchst mit
Code:
laufzeit = Float.valueOf(ET_laufzeit.getText().toString());
den text des EditTexts als float zu parsen. Wenn das leer ist, gibt ET_laufzeit.getText().toString() einen leeren String zurück, der nicht als Zahl interpretiert werden kann. Daraufhin wird dann eine NumberFormatException geworfen.
Gruss
AW: Leere EditTexts abfangen
Danke für die Antwort und die fehlerfindung :-) ergibt Sinn für mich und werde ich in Zukunft hoffentlich nicht so schnell noch mal machen ;-)
Gruß