我正在制作计算器,但是启动后,当我按下计算器的任何按钮(0、1,2等)时。不幸的是我得到计算器停止工作。在logcat中得到错误..我在哪里缺少??

码:

package com.example.calculator;

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

public class Calculator extends Activity implements OnClickListener {

    String initialnum="0";
    TextView textview;
    char operator=' ';
    int result;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_calculator);

        TextView textview= (TextView) findViewById(R.id.textView1);
        textview.setText("0");


        ((Button) findViewById(R.id.button00)).setOnClickListener(this);
        ((Button) findViewById(R.id.button01)).setOnClickListener(this);
        ((Button) findViewById(R.id.button02)).setOnClickListener(this);
        ((Button) findViewById(R.id.button03)).setOnClickListener(this);
        ((Button) findViewById(R.id.button04)).setOnClickListener(this);
        ((Button) findViewById(R.id.button05)).setOnClickListener(this);
        ((Button) findViewById(R.id.button06)).setOnClickListener(this);
        ((Button) findViewById(R.id.button07)).setOnClickListener(this);
        ((Button) findViewById(R.id.button08)).setOnClickListener(this);
        ((Button) findViewById(R.id.button09)).setOnClickListener(this);
        ((Button) findViewById(R.id.buttonc)).setOnClickListener(this);
        ((Button) findViewById(R.id.buttondivide)).setOnClickListener(this);
        ((Button) findViewById(R.id.buttonequal)).setOnClickListener(this);
        ((Button) findViewById(R.id.buttonminus)).setOnClickListener(this);
        ((Button) findViewById(R.id.buttonmultiply)).setOnClickListener(this);
        ((Button) findViewById(R.id.buttonplus)).setOnClickListener(this);

    }
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {

        case R.id.button00:
        case R.id.button01:
        case R.id.button02:
        case R.id.button03:
        case R.id.button04:
        case R.id.button05:
        case R.id.button06:
        case R.id.button07:
        case R.id.button08:
        case R.id.button09:

        String digit= ((Button) v).getText().toString();
        if (initialnum.equals("0")) {
            initialnum= digit;
        } else {
            initialnum +=digit;
        }
        textview.setText(initialnum);

        if (operator == '=') {
            result= 0;
            operator=' ';
        } break;

        case R.id.buttonc:
            result=0;
            operator=' ';

        case R.id.buttondivide:
            compute();
            operator='/';
            break;

        case R.id.buttonminus:
            compute();
            operator='-';
            break;

        case R.id.buttonmultiply:
            compute();
            operator='*';
            break;

        case R.id.buttonplus:
            compute();
            operator='+';
            break;

        case R.id.buttonequal:
            compute();
            operator='=';
            break;
        }

    }

    private void compute() {
        int number= Integer.parseInt(initialnum);
        // TODO Auto-generated method stub
        if (operator==' ') {
            result= number;
        } else if (operator=='+') {
            result+= number;
        }else if (operator=='-') {
            result-= number;
        }else if (operator=='*') {
            result*= number;
        } else if (operator=='/') {
            result/= number;
            }
        textview.setText(result);
        }

}


错误日志:

03-05 13:10:52.539: E/Trace(805): error opening trace file: No such file or directory (2)
03-05 13:10:53.359: I/Choreographer(805): Skipped 55 frames!  The application may be doing too much work on its main thread.
03-05 13:10:53.399: D/gralloc_goldfish(805): Emulator without GPU emulation detected.
03-05 13:14:46.659: D/AndroidRuntime(805): Shutting down VM
03-05 13:14:46.669: W/dalvikvm(805): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
03-05 13:14:46.699: E/AndroidRuntime(805): FATAL EXCEPTION: main
03-05 13:14:46.699: E/AndroidRuntime(805): java.lang.NullPointerException
03-05 13:14:46.699: E/AndroidRuntime(805):  at com.example.calculator.Calculator.onClick(Calculator.java:64)
03-05 13:14:46.699: E/AndroidRuntime(805):  at android.view.View.performClick(View.java:4084)
03-05 13:14:46.699: E/AndroidRuntime(805):  at android.view.View$PerformClick.run(View.java:16966)
03-05 13:14:46.699: E/AndroidRuntime(805):  at android.os.Handler.handleCallback(Handler.java:615)
03-05 13:14:46.699: E/AndroidRuntime(805):  at android.os.Handler.dispatchMessage(Handler.java:92)
03-05 13:14:46.699: E/AndroidRuntime(805):  at android.os.Looper.loop(Looper.java:137)
03-05 13:14:46.699: E/AndroidRuntime(805):  at android.app.ActivityThread.main(ActivityThread.java:4745)
03-05 13:14:46.699: E/AndroidRuntime(805):  at java.lang.reflect.Method.invokeNative(Native Method)
03-05 13:14:46.699: E/AndroidRuntime(805):  at java.lang.reflect.Method.invoke(Method.java:511)
03-05 13:14:46.699: E/AndroidRuntime(805):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
03-05 13:14:46.699: E/AndroidRuntime(805):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
03-05 13:14:46.699: E/AndroidRuntime(805):  at dalvik.system.NativeStart.main(Native Method)


布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10dp"
android:gravity="right|top"
android:orientation="vertical" >






<TextView
    android:id="@+id/textView1"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_marginTop="10dp"
    android:background="#cccccc"
    android:gravity="right"
    android:paddingTop="10dp"
    android:text="TextView"
    android:textSize="25dp" />


<TableLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="0.50"
    android:layout_marginTop="10dp" >

    <TableRow
        android:id="@+id/tableRow1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >




        <Button
            android:id="@+id/button07"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="7" />




        <Button
            android:id="@+id/button08"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="8" />



        <Button
            android:id="@+id/button09"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="9" />



        <Button
            android:id="@+id/buttondivide"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="/" />

    </TableRow>

    <TableRow
        android:id="@+id/tableRow2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >




        <Button
            android:id="@+id/button04"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="4" />




        <Button
            android:id="@+id/button05"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="5" />




        <Button
            android:id="@+id/button06"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="6" />



        <Button
            android:id="@+id/buttonmultiply"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="*" />

    </TableRow>

    <TableRow
        android:id="@+id/tableRow3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >




        <Button
            android:id="@+id/button01"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="1" />




        <Button
            android:id="@+id/button02"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="2" />




        <Button
            android:id="@+id/button03"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="3" />



        <Button
            android:id="@+id/buttonminus"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="-" />

    </TableRow>

    <TableRow
        android:id="@+id/tableRow4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >




        <Button
            android:id="@+id/button00"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="0" />




        <Button
            android:id="@+id/buttonc"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="c" />




        <Button
            android:id="@+id/buttonequal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="=" />



        <Button
            android:id="@+id/buttonplus"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="+" />

    </TableRow>
</TableLayout>

最佳答案

您的onClick方法中有nullPointerException,因为未初始化textview。

在onCreate更改此行

TextView textview= (TextView) findViewById(R.id.textView1);


对此:

textview= (TextView) findViewById(R.id.textView1);

关于android - 计算器:错误没有这样的文件或目录,跳过了帧,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22191760/

10-11 22:30