0

这是java ...有人可以告诉我这里有什么问题吗?错误可能在这里我认为logcat(下面)中的主要错误是一个空指针......虽然我可能是错的......提前谢谢大家!

package tip.calculator;


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




public class TipCalculator extends Activity 
{

private Button enter;
EditText myEditField ;
EditText myEditField2;
float percentage = 0;
float percentageInp = 0;
float billAmount = 0;
double output = 0; 
String output1 = "";
Button clearButton ;
TextView textView;

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

    myEditField = (EditText) findViewById(R.id.percentText);
    enter = (Button)findViewById(R.id.button1);
    myEditField2 = (EditText) findViewById(R.id.billText);



    enter.setOnClickListener(new OnClickListener() {


        public void onClick(View v) {

             TextView errors;
             textView = (TextView) findViewById(R.id.textView1);
             errors = (TextView) findViewById(R.id.errorText);    
             clearButton = (Button) findViewById(R.id.clearButton);

             for(;;){

             if(myEditField == null){
                 errors.setText("Percent must be filled in");
                 break;

             }

             if(myEditField2 == null){
                 errors.setText("Bill Amount must be filled in");
                 break;
             }

             }

            percentageInp = Float.parseFloat(myEditField.getText().toString());
            billAmount = Float.parseFloat(myEditField2.getText().toString());

            percentage = ((float)percentageInp /100);

            output = (double)(billAmount * percentage);

            double result = output * 100;
            result = Math.round(result);
            result = result / 100;

            output1 = Double.toString(result);

            textView.setText(output1 + " $");

        }
    });

    clearButton.setOnClickListener(new OnClickListener() {

        public void onClick(View arg0) {

            percentage = 0;
            output = 0;
            output1 = "";
             TextView textView = null;

            textView.setText("");

            percentageInp = 0;
            billAmount = 0;

            myEditField.setText("");
            myEditField2.setText("");


        }


    });
}
}

这是logcat ......我不知道从哪里开始......

08-01 18:13:41.915: E/AndroidRuntime(30328): FATAL EXCEPTION: main
08-01 18:13:41.915: E/AndroidRuntime(30328): java.lang.RuntimeException: Unable to start activity ComponentInfo{tip.calculator/tip.calculator.TipCalculator}: java.lang.NullPointerException
08-01 18:13:41.915: E/AndroidRuntime(30328):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1968)
08-01 18:13:41.915: E/AndroidRuntime(30328):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1993)
08-01 18:13:41.915: E/AndroidRuntime(30328):    at android.app.ActivityThread.access$600(ActivityThread.java:127)
08-01 18:13:41.915: E/AndroidRuntime(30328):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1159)
08-01 18:13:41.915: E/AndroidRuntime(30328):    at android.os.Handler.dispatchMessage(Handler.java:99)
08-01 18:13:41.915: E/AndroidRuntime(30328):    at android.os.Looper.loop(Looper.java:137)
08-01 18:13:41.915: E/AndroidRuntime(30328):    at android.app.ActivityThread.main(ActivityThread.java:4507)
08-01 18:13:41.915: E/AndroidRuntime(30328):    at java.lang.reflect.Method.invokeNative(Native Method)
08-01 18:13:41.915: E/AndroidRuntime(30328):    at java.lang.reflect.Method.invoke(Method.java:511)
08-01 18:13:41.915: E/AndroidRuntime(30328):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
08-01 18:13:41.915: E/AndroidRuntime(30328):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
08-01 18:13:41.915: E/AndroidRuntime(30328):    at dalvik.system.NativeStart.main(Native Method)
08-01 18:13:41.915: E/AndroidRuntime(30328): Caused by: java.lang.NullPointerException
08-01 18:13:41.915: E/AndroidRuntime(30328):    at tip.calculator.TipCalculator.onCreate(TipCalculator.java:82)
08-01 18:13:41.915: E/AndroidRuntime(30328):    at android.app.Activity.performCreate(Activity.java:4465)
08-01 18:13:41.915: E/AndroidRuntime(30328):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1052)
08-01 18:13:41.915: E/AndroidRuntime(30328):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1932)
08-01 18:13:41.915: E/AndroidRuntime(30328):    ... 11 more
4

2 回答 2

0
Caused by: java.lang.NullPointerException
    at tip.calculator.TipCalculator.onCreate(TipCalculator.java:82)

你永远不会初始化clearButton.

clearButton.setOnClickListener(new OnClickListener() {...}

从评论中添加

你需要移动这个:

clearButton = (Button) findViewById(R.id.clearButton);

到这里:

myEditField = (EditText) findViewById(R.id.percentText);
enter = (Button)findViewById(R.id.button1);
myEditField2 = (EditText) findViewById(R.id.billText);
clearButton = (Button) findViewById(R.id.clearButton);
于 2012-08-02T01:26:21.883 回答
0

clearButton 仅在单击 enter 按钮时设置。如果在输入按钮之前单击 clearButton,则会引发错误。

您可以使用 clearButton 与其他按钮一起设置findViewById

于 2012-08-02T01:36:30.253 回答