我想将 2 个数字相加并在屏幕上显示结果。 这就是为什么我有 2 个 EditText (Number1 & Number2) 、一个 Button (PLUS) 和一个显示结果的 TextView 。
问题是整数和 EditText 可能出现问题。
Logcat 说:“由 java.lang.NumberFormatException 引起:无效的 int:”
这是代码:
public class MainActivity extends Activity {
EditText FirstNum;
EditText SecondNum;
Button PlusButton;
TextView Result;
int Number1;
int Number2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FirstNum = (EditText) findViewById(R.id.FirstNum);
SecondNum = (EditText) findViewById(R.id.SecondNum);
Number1 = Integer.parseInt(FirstNum.getText().toString());
Number2 = Integer.parseInt(SecondNum.getText().toString());
PlusButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Result.setText(plusmethod(Number1,Number2)+"");
}
});
}
int plusmethod(int a, int b) {
return a + b;
}
更新:这是我的完整 Logcat:
Process: com.gss.dejix.calq, PID: 20008
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gss.dejix.calq/com.gss.dejix.calq.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2412)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2470)
at android.app.ActivityThread.access$900(ActivityThread.java:174)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1307)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5593)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.gss.dejix.calq.MainActivity.onCreate(MainActivity.java:36)
at android.app.Activity.performCreate(Activity.java:5458)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2376)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2470)
at android.app.ActivityThread.access$900(ActivityThread.java:174)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1307)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5593)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
at dalvik.system.NativeStart.main(Native Method)
最佳答案
在解析为 int 之前检查 editext 值,否则会给出 NumberFormatException :
if(FirstNum.getText().toString().trim().length()>0){
Number1 = Integer.parseInt(FirstNum.getText().toString());
}
if(SecondNum.getText().toString().trim().length()>0){
Number2 = Integer.parseInt(SecondNum.getText().toString());
}
您还缺少初始化 Result 和 PlusButton 在使用之前首先对其进行初始化。
示例:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FirstNum = (EditText) findViewById(R.id.FirstNum);
SecondNum = (EditText) findViewById(R.id.SecondNum);
Result = (TextView) findViewById(R.id.Result);
PlusButton = (Button) findViewById(R.id.PlusButton);
PlusButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean isValid=true;
if(FirstNum.getText().toString().trim().length()<=0){
FirstNum.setError("Value Required");
isValid=false;
}
if(SecondNum.getText().toString().trim().length()<=0){
SecondNum.setError("Value Required");
isValid=false;
}
if(isValid){
Result.setText(String.valueOf(plusmethod(Integer.parseInt(FirstNum.getText().toString()),Integer.parseInt(SecondNum.getText().toString()))));
}
}
});
}
关于java - EditText 问题中的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27038197/