Android 启动我的应用程序时遇到问题?
这是java。。。有人能告诉我这里怎么了吗?错误可能在这里,我想logcat(下面)中的主要错误是一个空指针。。。但我可能错了。。。提前谢谢大家Android 启动我的应用程序时遇到问题?,android,android-layout,android-emulator,Android,Android Layout,Android Emulator,这是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.
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
您从不初始化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);
clearButton仅在单击enter按钮时设置。若在enter按钮之前单击clearButton,则抛出错误
您可以使用
findViewById
设置clearButton和其他按钮是否在清单文件中包含TipCalculator并将其声明为launcher.clearButton.setOnClickListener(new OnClickListener(){否这是clearButton.setOnClickListener(new OnClickListener()){噢,我在onClick for enter中有它,这是一个问题,对吗?这就是你引用它的地方,你需要在正确的范围内初始化clearButton
。onClick()方法在按下按钮之前不会执行…“这是一个问题,对吗?”是的,onClick()是一个不同的范围。很高兴我能提供帮助,现在您应该能够自己跟踪一些LogCat错误。祝您好运!
myEditField = (EditText) findViewById(R.id.percentText);
enter = (Button)findViewById(R.id.button1);
myEditField2 = (EditText) findViewById(R.id.billText);
clearButton = (Button) findViewById(R.id.clearButton);