【问题标题】:How to take input from EditText, convert it into integer and display it on TextView in Android?如何从 EditText 获取输入,将其转换为整数并在 Android 的 TextView 上显示?
【发布时间】:2014-07-02 03:37:18
【问题描述】:

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

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,所以我猜罪魁祸首是这段代码: 字符串值 = 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): 在 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): 在 java.lang.reflect.Method.invokeNative(Native Method) 04-28 15:26:27.880: W/System.err(1319): 在 java.lang.reflect.Method.invoke(Method.java:515) 04-28 15:26:27.880: W/System.err(1319): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777) 04-28 15:26:27.880: W/System.err(1319): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593) 04-28 15:26:27.880: W/System.err(1319): 在 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): 在 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): 在 java.lang.reflect.Method.invokeNative(Native Method) 04-28 15:26:41.840: W/System.err(1319): 在 java.lang.reflect.Method.invoke(Method.java:515) 04-28 15:26:41.840: W/System.err(1319): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777) 04-28 15:26:41.850: W/System.err(1319): 在 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。 可能会更糟。 感谢大家的帮助。

【问题讨论】:

  • 你应该添加日志输出。
  • 它是如何以及何时崩溃的?应用程序启动时立即启动,还是仅在您单击按钮时启动?什么是 logcat 错误消息?只需将其从控制台复制并粘贴到此处即可。我要检查的一件事是 value 实际上可以解析为 int 类型。
  • 当我点击按钮添加
  • 好了,在debug模式下执行代码,在int FValue处下断点,运行代码。单击添加后检查 value 中包含的内容。如果您在使用记录器、解释消息或使用调试器时遇到问题,那么您可能需要先在 Eclipse 中进行一些基本培训。
  • 我已经上传了日志输出

标签: android nullpointerexception


【解决方案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(); }

希望对你有帮助...

谢谢

【讨论】:

  • 不...由于 try catch 块,当我按下按钮时它没有崩溃,但它也没有做任何其他事情
  • 打印到屏幕上的堆栈跟踪应该可以准确地告诉您问题出在哪里。
  • 查找红色消息,因为这些是错误输出。在底部获取最新的。您应该能够双击错误,它会将您带到给您带来问题的代码行。
【解决方案2】:

改变这一行:

display.setText("Total : "+iCounter);

到:

display.setText("Total : "+ String.valueOf(iCounter));

还可以尝试检查 iCounter 是否已初始化,例如 int iCounter = 0;

【讨论】:

  • 在将 int 附加到另一个 String 时,无需将其转换为 String。使用连接时会自动完成转换。
  • @confused_at_times 我不知道。谢谢!
猜你喜欢
  • 1970-01-01
  • 2017-04-27
  • 1970-01-01
  • 2011-10-20
  • 1970-01-01
  • 2020-01-22
  • 1970-01-01
  • 2017-10-12
  • 2019-02-27
相关资源
最近更新 更多