Hallo zusammen,
ich habe hier ein komplettes Beispiel wo folgendes gemacht wird:
strukturiertes Eingabefenster im XML-Editor
Daten eingegeben im EditText
Zugriff auf die Daten als Zahlenwerte
einfache Berechnungen mit den Daten
Ausgabe der Ergebnisse im EditText
Zugriff auf die Text-Resource aus dem Programm
einfache Plausibilitaetpruefung der Benutzereingaben
Grundlage ist das "Hello World" Programm, das automatisch erzeugt wird. Den Namen habe ich in MyCalcApplication geaendert.
danach die Dateien mit den hier aufgefuerten Code-Schnippseln fuellen.
Die Ausgabe erscheint bei mir im Emulator. Alle Felder (ausser den beiden Eingaben) sind gesperrt. Die beiden Eingabe akzeptieren nur Zahlen, und leider auch eine leere Eingabe, wenn der User den Vorgabewert loescht. Das ist im Programm abgefangen.
Wenn eine des Eingaben angeklickt wird, erscheint ein Softkeyboard mit Zahlen. Fals nicht erscheint unten im Handy-Gehaeuse ein Keyboard-Symbol. Dord druecken und waehlen. Leider habe ich schon vergessen was zu waehlen ist. Bitte probieren.
Ich hoffe, das viele Fragen die ich im Forum lese (oder die ungefragt mitkommen) mit diesem Beispiel beantwortet werden.
Viel Erfolg
MarkNeb
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:weightSum="1">
    <!-- diesen Platz erscheint noetig -->
    <Space
        android:layout_width="20px"
        android:layout_height="20px" />
    <!-- erste Eingabezeile -->
    <TableRow
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <EditText
            android:text="Ihre Groesse in cm :"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_weight="1"
            android:textIsSelectable="false"
            android:editable="false"
            android:clickable="false" />
        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="number"
            android:ems="3"
            android:id="@+id/editGroesse"
            android:editable="true"
            android:clickable="true"
            android:enabled="true"
            android:text="@string/def_groesse" />
    </TableRow>
    <!-- zweite Eingabezeile -->
    <TableRow
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <EditText
            android:text="Ihr Gewicht in kg :"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_weight="1"
            android:editable="false"
            android:textIsSelectable="false"
            android:clickable="false" />
        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="number"
            android:ems="3"
            android:id="@+id/editGewicht"
            android:editable="true"
            android:clickable="true"
            android:enabled="true"
            android:text="@string/def_gewicht" />
    </TableRow>
    <Space
        android:layout_width="20px"
        android:layout_height="50px" />
    <!-- beim Click wird die Funktion RechneBmi aufgerufen siehe MainActivity.java-->
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Berechne"
        android:onClick="RechneBmi" />
    <!-- Ausgabezeile -->
    <TableRow
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <EditText
            android:text="Ihr Body-Mass-Index :"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_weight="1"
            android:editable="false"
            android:textIsSelectable="false"
            android:clickable="false" />
        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ems="5"
            android:id="@+id/editBmi"
            android:text=".??."
            android:textIsSelectable="false"
            android:editable="false"
            android:clickable="false" />
    </TableRow>
</LinearLayout><resources>
    <string name="app_name">MyCalc Application</string>
    <string name="action_settings">Settings</string>
    <string name="def_groesse">160</string>
    <string name="def_gewicht">80</string>
</resources>
<!--action_settings kommt im Menue vor, wird hier aber nicht verwendet-->
<!--der string def_groesse MUSS in eine Zahl wandelbar sein, KEINE Buchstaben usw.-->
<!--der string def_gewicht natuerlich auch-->package com.example.mark.mycalcapplication;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;       // automatisch hinzugefuegt durch Alt+Enter (Cursor steht auf rotem Text)
public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
//  wird beim click des Sendebuttons aufgerufen. Zuordnung ueber den Namen im onClick-parameter
    public void RechneBmi(View viev){
        int gewicht = 0, groesse = 0, ibmi=0;
        double bmi=0.0 ;
        String MyText = "1211";              // Class fuer die Rueckgabewerte
        // Zugriff auf Zahleneingabe, damit werden die Eingabewerte verfuegbar
        EditText Groesse = (EditText) findViewById(R.id.editGroesse);
        EditText Gewicht = (EditText) findViewById(R.id.editGewicht);
        EditText Bmi = (EditText) findViewById(R.id.editBmi);
        // lese Eingaben und pruefe plausibilitaet
        // Groesse
        MyText = Groesse.getText().toString();      // hier steht die Eingabe als Text
        if (MyText.isEmpty()) {                     // User loescht die Vorgabe, dann gaebe es Aerger bei der Umwandlung
            MyText = "0";
            groesse = 0;}                           // hier wird die nachfolgende Abfrage ausgenutzt
        else groesse = Integer.valueOf(MyText);     // hier wird die User-Eingabe verwendet
        if (groesse < 100 || groesse > 250) {
            MyText = getString(R.string.def_groesse); // Zugriff auf Text-Resource
            Groesse.setText(MyText);                // schreibe zurueck ins Zahlenfeld
            groesse = Integer.valueOf(MyText);     // korrigiere Zahlenwert
        };
        // Gewicht
        MyText = Gewicht.getText().toString();
        if (MyText.isEmpty()) {
            MyText = "0";
            gewicht =0;}
        else  gewicht = Integer.valueOf(MyText);
        if (gewicht < 40 || gewicht > 400) {
            MyText = getString(R.string.def_gewicht); // Zugriff auf Text-Resource
            Gewicht.setText(MyText);                // schreibe zurueck ins Zahlenfeld
            gewicht = Integer.valueOf(MyText);     // korrigiere Zahlenwert
        };
       // valueOf() wandelt alles siehe http://developer.android.com/reference/java/lang/String.html
        //rechne
        bmi = gewicht * 100.0 * 100.0 / (groesse * groesse);    // hier steht bmi als double
        ibmi = (int) (bmi*100.0);               // begrenzung auf zwei Nachkommastellen
        bmi = ibmi /100.0;
        //ausgabe
        Bmi.setText(Double.toString(bmi));         // wandeln in string und zuweisen in Ausgabe
    }
} 
		