0

所以这是我的第一个真正的 Android 程序(!hello world),但我确实有 java 经验。程序编译得很好,但是在运行时它一打开就崩溃(尝试调试,但它在到达我的断点之前就崩溃了)。正在寻找任何对android更有经验的人的建议。

package org.me.tipcalculator;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import java.text.NumberFormat;
import android.util.Log;

public class TipCalculator extends Activity {

public static final String tag = "TipCalculator";

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

    final EditText mealpricefield = (EditText) findViewById(R.id.mealprice);
    final TextView answerfield = (TextView) findViewById(R.id.answer);

    final Button button =  (Button) findViewById(R.id.calculate);
    button.setOnClickListener(new Button.OnClickListener()
    {
        public void onClick(View v) {
            try
            {
                Log.i(tag, "onClick invoked.");
                String mealprice = mealpricefield.getText().toString();

                Log.i(tag, "mealprice is [" + mealprice + "]");
                String answer = "";

                if (mealprice.indexOf("$") == -1)
                {
                    mealprice = "$" + mealprice;
                }

                float fmp = 0.0F;

                NumberFormat nf =
                        java.text.NumberFormat.getCurrencyInstance();

                fmp = nf.parse(mealprice).floatValue();

                fmp *= 1.2;

                Log.i(tag, "Total Meal Price (unformatted) is [" + fmp + "]");

                answer = "Full Price, including 20% Tip: " + nf.format(fmp);

                answerfield.setText(answer);

                Log.i(tag, "onClick Complete");

            }
            catch(java.text.ParseException pe){
                Log.i (tag ,"Parse exception caught");
                answerfield.setText("Failed to parse amount?");
            }
            catch(Exception e){
                Log.e (tag ,"Failed to Calculate Tip:" + e.getMessage());
                e.printStackTrace();
                answerfield.setText(e.getMessage());
            }
        }
    }
    );
}

以防万一它有助于继承xml

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Android Tip Calculator"/>
<EditText
    android:id="@+id/mealprice"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:autoText="true"/>
<Button
    android:id="@+id/calculate"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Calculate Tip"/>
<TextView
    android:id= "@+id/answer"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text=""/>
</LinearLayout>
4

2 回答 2

1

使用adb logcat、DDMS 或 Eclipse 中的 DDMS 透视图来查找导致崩溃的 Java 堆栈跟踪。

于 2009-08-30T07:04:51.323 回答
0

您可能忘记在 AndroidManifest.xml 中注册您的活动名称。对于初学者来说,这是一个非常常见的错误。AndroidManifest.xml 应该是这样的:

    <activity android:name=".TipCalculator"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
于 2009-08-30T11:48:59.877 回答