我一直试图使用点击监听器上的按钮添加数字并在屏幕上显示... 代码段如下:
add.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stubi
String value = input.getText().toString();
int FValue = Integer.parseInt(value);
iCounter+=FValue;
display.setText("Total : "+iCounter);
}
});
当我尝试运行此代码时,我的应用程序崩溃了......为什么??? 任何帮助表示赞赏
阅读了几个回复并进行了实验,我将代码更改为
add.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
//String value = input.getText().toString();
int FValue = Integer.parseInt("15");
iCounter+=FValue;
display.setText("Total : "+iCounter);
}
});
现在每次点击按钮都会完美地添加15,所以我猜罪魁祸首就是这段代码: String value = input.getText()。toString();
...好 我运行的代码:
add.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
try{
String value = input.getText().toString().trim();
if(!value.equals(""))
{FValue = Integer.parseInt(value);}
iCounter+=FValue;
display.setText("Total : " + iCounter);
}catch(Exception e)
{ e.printStackTrace();}
}
});
我得到的错误: 04-28 15:26:27.820:W / System.err(1319):java.lang.NullPointerException 04-28 15:26:27.820:W / System.err(1319):at com.honeycomb.helloworld.MainActivity $ 1.onClick(MainActivity.java:33) 04-28 15:26:27.820:W / System.err(1319):在android.view.View.performClick(View.java:4424) 04-28 15:26:27.840:W / System.err(1319):在android.view.View $ PerformClick.run(View.java:18383) 04-28 15:26:27.840:W / System.err(1319):在android.os.Handler.handleCallback(Handler.java:733) 04-28 15:26:27.840:W / System.err(1319):在android.os.Handler.dispatchMessage(Handler.java:95) 04-28 15:26:27.840:W / System.err(1319):在android.os.Looper.loop(Looper.java:137) 04-28 15:26:27.840:W / System.err(1319):在android.app.ActivityThread.main(ActivityThread.java:4998) 04-28 15:26:27.840:W / System.err(1319):at java.lang.reflect.Method.invokeNative(Native Method) 04-28 15:26:27.880:W / System.err(1319):at java.lang.reflect.Method.invoke(Method.java:515) 04-28 15:26:27.880:W / System.err(1319):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:777) 04-28 15:26:27.880:W / System.err(1319):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593) 04-28 15:26:27.880:W / System.err(1319):at dalvik.system.NativeStart.main(Native Method) 04-28 15:26:41.790:W / System.err(1319):java.lang.NullPointerException 04-28 15:26:41.790:W / System.err(1319):at com.honeycomb.helloworld.MainActivity $ 1.onClick(MainActivity.java:33) 04-28 15:26:41.790:W / System.err(1319):在android.view.View.performClick(View.java:4424) 04-28 15:26:41.800:W / System.err(1319):在android.view.View $ PerformClick.run(View.java:18383) 04-28 15:26:41.800:W / System.err(1319):在android.os.Handler.handleCallback(Handler.java:733) 04-28 15:26:41.800:W / System.err(1319):在android.os.Handler.dispatchMessage(Handler.java:95) 04-28 15:26:41.800:W / System.err(1319):在android.os.Looper.loop(Looper.java:137) 04-28 15:26:41.810:W / System.err(1319):在android.app.ActivityThread.main(ActivityThread.java:4998) 04-28 15:26:41.840:W / System.err(1319):at java.lang.reflect.Method.invokeNative(Native Method) 04-28 15:26:41.840:W / System.err(1319):at java.lang.reflect.Method.invoke(Method.java:515) 04-28 15:26:41.840:W / System.err(1319):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:777) 04-28 15:26:41.850:W / System.err(1319):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593) 04-28 15:26:41.850:W / System.err(1319):at dalvik.system.NativeStart.main(Native Method)
让人惊讶!!! 我不小心忘了把
input = (EditText) findViewById(R.id.etInput);
导致了所有这些错误。 无论如何......第一天用android。 可能会更糟。 感谢大家的帮助。
答案 0 :(得分:1)
你可以使用android:inputType =“number”或只允许数值的东西。
你可以这样解析
try {
int FValue = 0;
String value = input.getText().toString().trim(); // note trim()
if(!entry.equals(""))
FValue= Integer.parseInt(value);
iCounter+=FValue; // make icounter global instead of declaring in the onclick
display.setText("Total : " + iCounter);
}
catch(Exception e)
{ e.printStackTrace(); }
希望它有所帮助...
THX
答案 1 :(得分:0)
更改此行:
display.setText("Total : "+iCounter);
为:
display.setText("Total : "+ String.valueOf(iCounter));
同时尝试检查iCounter是否已初始化,如int iCounter = 0;