-1

我是 android 开发的新手,我在第一次真正的尝试和一个应用程序时遇到了障碍。我正在尝试制作一个简单的计算器。但是,当我运行应用程序并输入要添加到计算器的序列中的第二个数字时,模拟器会显示“不幸的是,计算器已停止工作”。我查看了 logCat 并且有一大堆红色错误,所以我认为我不会发布所有这些错误。

我的代码如下:

    package com.example.helloandroid;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

import android.widget.Button;
import android.widget.EditText;
import android.view.View.OnClickListener;
import android.widget.Toast;
import android.content.Context;
import android.view.View;


public class HelloAndroidActivity extends Activity {
    EditText helloName;
    /** Called when the activity is first created. */

    int value = 0;
    int acuum = 0;
    boolean newValue = false;

    Button add, sub, mult, div, equ, one, two, three;
    TextView display;

    @Override

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);


        add = (Button) findViewById(R.id.Add);
        sub = (Button) findViewById(R.id.Sub);
        mult= (Button) findViewById(R.id.Mult);
        div = (Button) findViewById(R.id.Div);
        equ = (Button) findViewById(R.id.Equ);   
        one = (Button) findViewById(R.id.One); 
        two = (Button) findViewById(R.id.Two); 
        three = (Button) findViewById(R.id.Three); 
        display = (TextView) findViewById(R.id.Value);

        add.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                value = Integer.parseInt(display.getText().toString());
                acuum += value;
                newValue = true;
            }
        });

        sub.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                value = Integer.parseInt(display.getText().toString());
                acuum -= value;
                newValue = true;

            }
        });

        one.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                if(newValue == true)
                    display.setText('1');
                else
                    display.setText(display.getText().toString() +  '1');

                newValue = false;

            }
        });

        two.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                if(newValue == true)
                    display.setText('2');
                else
                    display.setText(display.getText().toString() +  '2');

                newValue = false;

            }
        });

    }

}

只是为了尝试进一步澄清。如果我输入 1 + 2,当我单击 2 时,应用程序就会崩溃。我觉得这是一个简单的错误,我只是在看。任何帮助是极大的赞赏。

预先感谢!

LogCat 价值:

05-15 02:39:30.047:D/gralloc_goldfish(540):没有检测到 GPU 仿真的仿真器。05-15 02:39:30.097: I/dalvikvm(540): threadid=3: 对信号 3 做出反应 05-15 02:39:30.128: I/dalvikvm(540): 将堆栈跟踪写入 '/data/anr/ traces.txt' 05-15 02:39:46.427:W/ResourceType(540):获取资源编号 0x00000032 05-15 02:39:46.427 的值时没有包标识符:D/AndroidRuntime(540):关闭 VM 05 -15 02:39:46.427: W/dalvikvm(540): threadid=1: 线程退出未捕获异常 (group=0x409c01f8) 05-15 02:39:46.437: E/AndroidRuntime(540): FATAL EXCEPTION: main 05 -15 02:39:46.437: E/AndroidRuntime(540): android.content.res.Resources$NotFoundException: 字符串资源 ID #0x32 05-15 02:39:46.437: E/AndroidRuntime(540): 在 android.content .res.Resources.getText(Resources.java:247) 05-15 02:39:46.437: E/AndroidRuntime(540):

对 logCat 的格式感到抱歉。

4

1 回答 1

1

你可能想看看几件事。

'2'在一些使用字符串可能更有意义的地方使用字符"2"。例如:

display.setText('1');

和:

display.setText(display.getText().toString() +  '2');

我认为这是导致您的具体问题的第一个问题。对此的支持在于您的错误日志中的以下错误:

致命异常:主 05-15 02:39:46.437:E/AndroidRuntime(540):
android.content.res.Resources$NotFoundException:
字符串资源 ID #0x32

#0x32(hex 32) 是 的整数值'2'。如果您查看TextView文档,您会看到一些原型setText,第一个原型采用完整的资源 ID:

公共最终无效 setText (int resid)

这解释了正在发生的事情。被'2'视为整数并用于查找资源(不存在)。


初始化为 true 而不是 false 可能也是一个好主意newValue,因为这应该是初始状态。否则,如果您的计算器在显示屏上以“0”开头,则按下该1按钮会给您,01而不是1.

于 2012-05-15T03:54:22.937 回答