Wie verarbeiten Sie eine Fahrenheit-Temperatur von EditText und drucken Ihre entsprechenden Celsius-Temperatur?

Ich bin verwirrt mit dem Konzept der Schaffung eines Listener in Android. Der Zweck meines Programms ist einfach: konvertieren zwischen Einheiten (wie Fahrenheit in Celsius Celsius in Fahrenheit, etc.). Wie bekomme ich den text im EditText-Objekt und dann wie kann ich es ausdrucken? Ich erhalte eine Fehlermeldung jedes mal, wenn ich laufen (Leider Converter.exe gestoppt hat.) Hier ist mein code bisher. Bitte beraten.

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class ConverterActivity extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button button = (Button) findViewById(R.id.temp_Button);
    button.setOnClickListener(new View.OnClickListener() 
    {
        public void onClick(View v)
        {
            setContentView(R.layout.body);
        }
    });  

    Button ok = (Button) findViewById(R.id.OK_Button);
    ok.setOnClickListener(new View.OnClickListener() 
    {
        public void onClick(View v)
        {
            EditText et = (EditText) getText(0);
            final int num = Integer.parseInt(et.toString());
            double answer = (num - 32) * 5/9;
            TextView tv = (TextView) findViewById(R.id.editText);
            tv.setText(Double.toString(answer));
        }
    });

}
}

Habe ich zwei Layouts (.xml) - Dateien als auch (ich bin nicht sicher, ob dies ist das richtige Programmier-Stil).

main einfach auf die Schaltflächen angezeigt, die angeklickt werden können. Dann habe ich die zweite .xml-Datei angezeigt, nachdem die Schaltfläche geklickt wird.

main.xml

<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<Button
    android:id="@+id/temp_Button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/F" />
 <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/C" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/I" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/Cm" />

 </LinearLayout>

body.xml (die zweite)-

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:text="Enter temperature:" />

<EditText
    android:id="@+id/editText"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:background="@android:drawable/editbox_background"
    android:digits="1, 2, 3, 4, 5, 6, 7, 8, 9" />

<Button
    android:id="@+id/cancel_Button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Cancel" />

<Button
    android:id="@+id/OK_Button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="OK" />

 </LinearLayout>

Nur zu wiederholen, mein problem tritt auf, mit diesem segment code:

 Button ok = (Button) findViewById(R.id.OK_Button);
   ok.setOnClickListener(new View.OnClickListener() 
   {
       public void onClick(View v)
        {
            EditText et = (EditText) getText(0);
            final int num = Integer.parseInt(et.toString());
            double answer = (num - 32) * 5/9;
           TextView tv = (TextView) findViewById(R.id.editText);
           tv.setText(Double.toString(answer));
        }
   });

Die Absicht ist, um die Anzahl aus dem EditText-Objekt, das die Eingaben des Benutzers, konvertieren Sie es und drucken Sie es wieder aus, aber ich bin mir nicht sicher, ob ich hier mache, richtig ist, oder ob dies auch an der richtigen Stelle.

** * UPDATE: Hier ist der log.

02-06 19:53:36.148: D/AndroidRuntime(529): Shutting down VM
02-06 19:53:36.158: W/dalvikvm(529): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
02-06 19:53:36.168: E/AndroidRuntime(529): FATAL EXCEPTION: main
02-06 19:53:36.168: E/AndroidRuntime(529): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.sapra.converter/com.sapra.converter.ConverterActivity}: java.lang.NullPointerException
02-06 19:53:36.168: E/AndroidRuntime(529):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
02-06 19:53:36.168: E/AndroidRuntime(529):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
02-06 19:53:36.168: E/AndroidRuntime(529):  at android.app.ActivityThread.access$600(ActivityThread.java:123)
02-06 19:53:36.168: E/AndroidRuntime(529):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
02-06 19:53:36.168: E/AndroidRuntime(529):  at android.os.Handler.dispatchMessage(Handler.java:99)
02-06 19:53:36.168: E/AndroidRuntime(529):  at android.os.Looper.loop(Looper.java:137)
02-06 19:53:36.168: E/AndroidRuntime(529):  at android.app.ActivityThread.main(ActivityThread.java:4424)
02-06 19:53:36.168: E/AndroidRuntime(529):  at java.lang.reflect.Method.invokeNative(Native Method)
02-06 19:53:36.168: E/AndroidRuntime(529):  at java.lang.reflect.Method.invoke(Method.java:511)
02-06 19:53:36.168: E/AndroidRuntime(529):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
02-06 19:53:36.168: E/AndroidRuntime(529):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
02-06 19:53:36.168: E/AndroidRuntime(529):  at dalvik.system.NativeStart.main(Native Method)
02-06 19:53:36.168: E/AndroidRuntime(529): Caused by: java.lang.NullPointerException
02-06 19:53:36.168: E/AndroidRuntime(529):  at com.sapra.converter.ConverterActivity.onCreate(ConverterActivity.java:29)
02-06 19:53:36.168: E/AndroidRuntime(529):  at android.app.Activity.performCreate(Activity.java:4465)
02-06 19:53:36.168: E/AndroidRuntime(529):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
02-06 19:53:36.168: E/AndroidRuntime(529):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
02-06 19:53:36.168: E/AndroidRuntime(529):  ... 11 more
  • Was für Fehler? Und getText(0) ist nicht richtig. Verwenden getText().toString().
  • aneal, meine Frage ist, GEFRAGT, ob mein code richtig ist? Ich korrigierte meine Fehler, die du erwähnt hast (danke dafür). Siehst du irgendetwas konkret falsch?
  • Was passiert, wenn Sie auf die Schaltfläche? Hast du einen log? Das sind nützliche Dinge zu erwähnen und hochladen.
  • soeben das log. Vielen Dank für Ihre Zeit.
  • Was ist die Linie 29 in ConverterActivity?
  • Meinst du die " public void onClick(View v)"? Also, wenn der Benutzer tippt eine Zahl ein und klickt auf die Schaltfläche OK, diese Methode soll die Anzahl, konvertieren Sie es in Celsius bilden, und dann zurück an den Benutzer. (Wenn das war die falsche Linie, könnte man nur geben, damit ich weiß, was du meinst?)

Schreibe einen Kommentar