problem mit einer berechnung bei anfänger app bitte um hilfe

  • package de.deeprojects.speedcalc;


    import android.app.Activity;
    import android.app.AlertDialog;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;


    public class SpeedCalc extends Activity implements OnClickListener {
    /** Called when the activity is first created. */


    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Button calc = (Button) findViewById(R.id.calc);
    calc.setOnClickListener(this);
    Button delete = (Button) findViewById(R.id.del);
    delete.setOnClickListener(this);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu, menu);
    return true;
    }


    public boolean onOptionsItemSelected(MenuItem item) {
    item.getItemId();
    setContentView(R.layout.about);
    return false;
    }


    public void onClick(View v) {


    EditText speed = (EditText) findViewById(R.id.speed);
    EditText time = (EditText) findViewById(R.id.time);
    EditText way = (EditText) findViewById(R.id.way);


    double weg = Double.parseDouble(speed.getText().toString());
    double zeit = Double.parseDouble(time.getText().toString());
    double kmh = Double.parseDouble(way.getText().toString());


    switch (v.getId()) {


    case R.id.calc:


    // abfrage ob edittext ausgefüllt
    if ((weg == 0) && (zeit == 0) && (kmh == 0)) {
    new AlertDialog.Builder(this).setMessage(R.string.err)
    .setNeutralButton(R.string.error, null).show();
    return;
    }
    //weg berechnen
    if ((weg == 0) && (zeit != 0) && (kmh != 0)) {
    double aweg = kmh * zeit;
    EditText result = (EditText)findViewById(R.id.way);
    result.setText(String.format("%.02f", aweg));
    }
    // //
    // // zeit berechnen
    // if ((weg.length() != 0) && (zeit.length() == 0)
    // && (kmh.length() != 0)) {
    // // zeit = weg / kmh
    // time.setText("1");
    // }
    //
    // // geschwindigkeit berechnen
    // if ((weg.length() != 0) && (zeit.length() != 0)
    // && (kmh.length() == 0)) {
    // // kmh = weg / zeit
    // speed.setText("2");
    // }
    break;


    case R.id.del:
    speed.setText("");
    way.setText("");
    time.setText("");
    break;
    }
    }
    }


    ich hab so das gefühl das richtig dumme fehler drin sind, hoffe mir kann jemand helfen


    gruß dennis

  • bei der berechnung von geschwindigkeit, zeit und weg haut mein progg nen fehler raus bzw. ich weis nicht wie ich es jetzt richtig konvertiere.
    sobald ich das app dann starte kann ich zahlen eingeben wenn ich allerdings den button calc(berechne drücke) kommt ein unerwarteter fehler und das app stürzt ab

  • Hi dee/projects,


    vielleicht erstmal ein paar Designvorschläge.
    1. nimm das hier:

    Zitat


    EditText speed = (EditText) findViewById(R.id.speed);
    EditText time = (EditText) findViewById(R.id.time);
    EditText way = (EditText) findViewById(R.id.way);


    aus der onClick Funktion und schreib es in die onCreate und setzte speed, time, way als private Klassenvariablen.
    Diese Änderung bewirkt das nicht jedesmal wenn du auf den Button klickst die XML nach den EditText Views durchsucht werden muss.


    2. Nutze für die beiden Buttons jeweils eine eigene onClick Funktion ist einfach übersichtlicher.
    Falls die Buttons nicht anderweitig genutzt werden, kannst du das hier

    Zitat


    Button calc = (Button) findViewById(R.id.calc);
    calc.setOnClickListener(this);
    Button delete = (Button) findViewById(R.id.del);
    delete.setOnClickListener(this);


    rausnehmen und einfach die onClick Funktionen in der XML deklarieren. Siehe dazu Button


    3.

    Java
    EditText result = (EditText)findViewById(R.id.way);


    das brauchst du nicht mittels der EditText way greifst du doch schon auf diese EditText View zu.


    Ok kommen wir nun zu deinem Problem.
    Das SDK enthält eine Anzeige für Fehler diese heißt LogCat. Wenn du das Eclipseplugin für Android installiert hast kannst du in der DDMS Perspektive auf die LogCat zugreifen.


    mfg Titus

  • Hi dee/projects,


    Java
    double weg = Double.parseDouble(speed.getText().toString());
    double zeit = Double.parseDouble(time.getText().toString());
    double kmh = Double.parseDouble(way.getText().toString());


    dein App stürtzt deshalb ab weil ein EditText leer bleibt und du versucht dann diesen "leeren" Inhalt in einen Double Wert um zu wandeln.


    Mfg Titus

Jetzt mitmachen!

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