Android从编辑文本中获取int?

时间:2012-09-09 15:42:47

标签: java android string android-edittext int

我试图从编辑文本集中获取一个int到inputType =“number”然后输出它(我稍后会用它做一些事情)我不能这样做,这是我有的代码我已经告诉尝试,但它不起作用

Button go;
EditText num;
TextView OP, ST;
String OPS;
int oer;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    initalize();
    go.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {

            int myNum = 0;

            OPS = num.getText().toString();

            try {
                myNum = Integer.parseInt(OPS);
            } catch(NumberFormatException nfe) {
                System.out.println("Could not parse " + nfe);
            }
            OP.setText(myNum);
        }

在我运行之后它强行关闭。 这是LOG CAT:

09-09 16:53:00.400: W/ResourceType(20145): No package identifier when getting value for resource number 0x00000008
09-09 16:53:00.400: D/AndroidRuntime(20145): Shutting down VM
09-09 16:53:00.400: W/dalvikvm(20145): threadid=1: thread exiting with uncaught exception (group=0x40a411f8)
09-09 16:53:00.561: E/AndroidRuntime(20145): FATAL EXCEPTION: main
09-09 16:53:00.561: E/AndroidRuntime(20145): android.content.res.Resources$NotFoundException: String resource ID #0x8
09-09 16:53:00.561: E/AndroidRuntime(20145):    at android.content.res.Resources.getText(Resources.java:248)
09-09 16:53:00.561: E/AndroidRuntime(20145):    at android.widget.TextView.setText(TextView.java:3473)
09-09 16:53:00.561: E/AndroidRuntime(20145):    at com.Nutty.studios.randnumgen.free.RandomNumberGenActivity$1.onClick(RandomNumberGenActivity.java:42)
09-09 16:53:00.561: E/AndroidRuntime(20145):    at android.view.View.performClick(View.java:3511)
09-09 16:53:00.561: E/AndroidRuntime(20145):    at android.view.View$PerformClick.run(View.java:14105)
09-09 16:53:00.561: E/AndroidRuntime(20145):    at android.os.Handler.handleCallback(Handler.java:605)
09-09 16:53:00.561: E/AndroidRuntime(20145):    at android.os.Handler.dispatchMessage(Handler.java:92)
09-09 16:53:00.561: E/AndroidRuntime(20145):    at android.os.Looper.loop(Looper.java:137)
09-09 16:53:00.561: E/AndroidRuntime(20145):    at android.app.ActivityThread.main(ActivityThread.java:4575)
09-09 16:53:00.561: E/AndroidRuntime(20145):    at java.lang.reflect.Method.invokeNative(Native Method)
09-09 16:53:00.561: E/AndroidRuntime(20145):    at java.lang.reflect.Method.invoke(Method.java:511)
09-09 16:53:00.561: E/AndroidRuntime(20145):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
09-09 16:53:00.561: E/AndroidRuntime(20145):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
09-09 16:53:00.561: E/AndroidRuntime(20145):    at dalvik.system.NativeStart.main(Native Method)

如果我尝试输出字符串而不是整数,它可以正常工作吗?

3 个答案:

答案 0 :(得分:12)

1。 永远不会从EditText获得 intInputType会提供,以便为您提供正确的softKeyboard。 ..

2. 您可以使用此文本从EditText转换为整数。

int i = Integer.parseInt(editText.getText().toString());

此外setText会要求您提供String ....所以您需要这样做...

OP.setText(myNum+"");

toString()仅适用于Object类型,并且已将myNum声明为int,这是原始类型 ...你需要使用+ ""

答案 1 :(得分:2)

"inputType = number" 并不意味着EditText中的输入将采用整数形式。它只是暗示了在输入值时向用户显示的软键盘类型以及EditText中的有效条目,即。使用inputType=number的EditText只会使用数字,而不是其他任何内容,但这些数字将为字符串格式的 [String number = "12345"],您需要手动从中获取整数值 字符串。

将字符串输入转换为整数:

<强> int myNum = Integer.valueOf(editText.getText().toString()).intValue();


此外,您的输出TextView只能在setText()中包含字符串参数,并且您尝试传递整数。 TextView.setText("STRING") 是在任何TextView中显示输出的格式,如果您尝试在TextView中显示整数,则需要先将其转换为字符串。

将整数转换为字符串输出: OP.setText(Integer.toString(myNum);

答案 2 :(得分:2)

OP.setText(myNum)导致崩溃。

这是由于setText(int value)的性质,它将查找字符串资源而不是设置整数的文字值。

相反,您需要这样做:

OP.setText(String.valueOf(myNum))

其他一切都还可以。