我试图从编辑文本集中获取一个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)
如果我尝试输出字符串而不是整数,它可以正常工作吗?
答案 0 :(得分:12)
1。 永远不会从EditText获得 int
,InputType
会提供,以便为您提供正确的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))
其他一切都还可以。