2

我正在尝试从设置为 inputType="number" 的编辑文本中获取一个 int,然后将其输出(稍后我将对其进行处理)我做不到,这是我被告知要尝试的代码但它不起作用

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);
        }

在我运行它之后,它强制关闭。这是日志猫:

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)

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

4

3 回答 3

12

1.你永远不会从 EditText得到一个 ,它提供给你正确的软键盘...intInputType

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

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

此外,您还setText希望您为它提供一个String....所以您需要这样做...

OP.setText(myNum+"");

toString()仅适用于Object类型,并且正如您声明myNum的那样int,这是一种原始类型....您需要使用+ ""

于 2012-09-09T15:49:15.937 回答
2

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

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

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


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

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

于 2012-09-09T15:51:47.710 回答
2

OP.setText(myNum) 导致崩溃。

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

相反,您需要做的是:

OP.setText(String.valueOf(myNum))

其他一切都很好。

于 2012-09-09T16:03:54.403 回答