如何从EditText获取输入,将其转换为整数并在Android中的TextView上显示?

时间:2014-04-28 18:19:48

标签: android nullpointerexception

我一直试图使用点击监听器上的按钮添加数字并在屏幕上显示... 代码段如下:

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。 可能会更糟。 感谢大家的帮助。

2 个答案:

答案 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;