Android程序崩溃(新平台) [英] android program crashing (new to platform)

查看:153
本文介绍了Android程序崩溃(新平台)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以这是我第一次真正的Andr​​oid程序(你好!世界),但我有java的体验。程序编译罚款,但在运行它,因为它打开(试图调试,一旦崩溃,但它崩溃它击中我的前断点)。一直在寻找任何人的意见谁是更有经验的Andr​​oid。

 包org.me.tipcalculator;
进口android.app.Activity;
进口android.os.Bundle;
进口android.widget.TextView;
进口android.view.View;
进口android.widget.Button;
进口android.widget.EditText;
进口java.text.NumberFormat中;
进口android.util.Log;公共类TipCalculator延伸活动{公共静态最后的字符串标记=TipCalculator;/ **当第一次创建活动调用。 * /
@覆盖
公共无效的onCreate(捆绑冰柱){
    super.onCreate(冰柱);
    的setContentView(R.layout.main);    最终的EditText mealpricefield =(EditText上)findViewById(R.id.mealprice);
    最终的TextView answerfield =(的TextView)findViewById(R.id.answer);    最后Button按钮=(按钮)findViewById(R.id.calculate);
    button.setOnClickListener(新Button.OnClickListener()
    {
        公共无效的onClick(视图v){
            尝试
            {
                Log.i(标签的onClick调用。);
                。字符串mealprice = mealpricefield.getText()的toString();                Log.i(标签,mealprice为[+ mealprice +]);
                字符串的回答=;                如果(mealprice.indexOf($)== - 1)
                {
                    mealprice =$+ mealprice;
                }                浮FMP = 0.0F;                NumberFormat的NF =
                        java.text.NumberFormat.getCurrencyInstance();                FMP = nf.parse(mealprice).floatValue();                FMP * = 1.2;                Log.i(标签,共餐价格(格式化)为[+ FMP +]);                回答=全线降价,其中20%的小费:+ nf.format(FMP);                answerfield.setText(答案);                Log.i(标签的onClick完成);            }
            赶上(java.text.ParseException PE){
                Log.i(标签,解析异常捕获);
                answerfield.setText(无法​​解析量?);
            }
            赶上(例外五){
                Log.e(标签,无法计算提示:+ e.getMessage());
                e.printStackTrace();
                answerfield.setText(e.getMessage());
            }
        }
    }
    );
}

以防万一它有助于继承人的XML

 <?XML版本=1.0编码=UTF-8&GT?;
< LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
机器人:方向=垂直
机器人:layout_width =FILL_PARENT
机器人:layout_height =FILL_PARENT>
<的TextView
    机器人:layout_width =FILL_PARENT
    机器人:layout_height =WRAP_CONTENT
    机器人:文字=Android的小费计算器/>
<的EditText
    机器人:ID =@ + ID / mealprice
    机器人:layout_width =FILL_PARENT
    机器人:layout_height =WRAP_CONTENT
    机器人:自动图文集=真/>
<按钮
    机器人:ID =@ + ID /计算
    机器人:layout_width =WRAP_CONTENT
    机器人:layout_height =WRAP_CONTENT
    机器人:文字=计算提示/>
<的TextView
    机器人:ID =@ + ID /回答
    机器人:layout_width =FILL_PARENT
    机器人:layout_height =WRAP_CONTENT
    机器人:文字=/>
< / LinearLayout中>


解决方案

您可能会忘记在AndroidManifest.xml注册您的活动名称。这是先发球员非常常见的错误。 AndroidManifest.xml中应该是这样的:

 <活动机器人:名字=。TipCalculator
              机器人:标签=@字符串/ APP_NAME>
        &所述;意图滤光器>
            <作用机器人:名字=android.intent.action.MAIN/>
            <类机器人:名字=android.intent.category.LAUNCHER/>
        &所述; /意图滤光器>
    < /活性GT;

So it is my first real Android program (!hello world), but i do have java experience.The program compiles fine, but on running it crashes as soon as it opens (tried debugging, but it crashes before it hits my breakpoint). Was looking for any advice from anyone who is more experienced with 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());
            }
        }
    }
    );
}

Just in case it helps heres the 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>

解决方案

You may forget to register your activity name in the AndroidManifest.xml. It is a very common mistake for starters. AndroidManifest.xml should be like this:

    <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>

这篇关于Android程序崩溃(新平台)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆