Integer.parseInt强制关闭我的Android应用程序关闭

时间:2011-07-26 07:43:14

标签: android

这是我的原始代码:

final EditText t1 = (EditText)findViewById(R.id.editText1);
int a = Integer.parseInt(t1.getText().toString());

现在使用此代码,当我在模拟器上运行时,我会强制关闭。

所以我把它塞进了这个

String s = t1.getText().toString();

一切正常,但当我改为:

String s = t1.getText().toString();
int a = Integer.parseInt(s);

然后再次强制关闭。

编辑:

我在按钮点击监听器中有这样的代码:

button.setOnClickListener(new View.OnClickListener() 
    {
        public void onClick(View v) 
        {
            int a = 0;
            int b = 0;
            try
            {
                a = Integer.parseInt(t1.getText().toString());
                b = Integer.parseInt(t2.getText().toString());
            }
            catch(NumberFormatException e)
            {
                alert.show();
            }


        }
    });

但是当我拿出它时,它确实正确地捕获了异常。给我一点时间,生病得到logcat。

    07-26 07:54:14.360: ERROR/AndroidRuntime(711): FATAL EXCEPTION: main
07-26 07:54:14.360: ERROR/AndroidRuntime(711): android.content.res.Resources$NotFoundException: String resource ID #0x7
07-26 07:54:14.360: ERROR/AndroidRuntime(711):     at android.content.res.Resources.getText(Resources.java:201)
07-26 07:54:14.360: ERROR/AndroidRuntime(711):     at android.widget.TextView.setText(TextView.java:2857)
07-26 07:54:14.360: ERROR/AndroidRuntime(711):     at com.testing.test2.Test2Activity$1.onClick(Test2Activity.java:47)
07-26 07:54:14.360: ERROR/AndroidRuntime(711):     at android.view.View.performClick(View.java:2485)
07-26 07:54:14.360: ERROR/AndroidRuntime(711):     at android.view.View$PerformClick.run(View.java:9080)
07-26 07:54:14.360: ERROR/AndroidRuntime(711):     at android.os.Handler.handleCallback(Handler.java:587)
07-26 07:54:14.360: ERROR/AndroidRuntime(711):     at android.os.Handler.dispatchMessage(Handler.java:92)
07-26 07:54:14.360: ERROR/AndroidRuntime(711):     at android.os.Looper.loop(Looper.java:123)
07-26 07:54:14.360: ERROR/AndroidRuntime(711):     at android.app.ActivityThread.main(ActivityThread.java:3683)
07-26 07:54:14.360: ERROR/AndroidRuntime(711):     at java.lang.reflect.Method.invokeNative(Native Method)
07-26 07:54:14.360: ERROR/AndroidRuntime(711):     at java.lang.reflect.Method.invoke(Method.java:507)
07-26 07:54:14.360: ERROR/AndroidRuntime(711):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
07-26 07:54:14.360: ERROR/AndroidRuntime(711):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
07-26 07:54:14.360: ERROR/AndroidRuntime(711):     at dalvik.system.NativeStart.main(Native Method)
07-26 07:54:14.430: WARN/ActivityManager(68):   Force finishing activity com.testing.test2/.Test2Activity
07-26 07:54:14.940: WARN/ActivityManager(68): Activity pause timeout for HistoryRecord{405e8368 com.testing.test2/.Test2Activity}
07-26 07:54:16.349: INFO/Process(711): Sending signal. PID: 711 SIG: 9
07-26 07:54:16.389: INFO/ActivityManager(68): Process com.testing.test2 (pid 711) has died.
07-26 07:54:16.399: INFO/WindowManager(68): WIN DEATH: Window{407013e0 com.testing.test2/com.testing.test2.Test2Activity paused=false}
07-26 07:54:16.689: WARN/InputManagerService(68): Got RemoteException sending setActive(false) notification to pid 711 uid 10035
07-26 07:54:21.599: DEBUG/dalvikvm(258): GC_EXPLICIT freed 6K, 54% free 2597K/5639K, external 410K/517K, paused 76ms
07-26 07:54:26.650: DEBUG/dalvikvm(303): GC_EXPLICIT freed 6K, 54% free 2544K/5511K, external 410K/517K, paused 100ms
07-26 07:54:31.640: DEBUG/dalvikvm(315): GC_EXPLICIT freed 1K, 54% free 2538K/5511K, external 410K/517K, paused 72ms

4 个答案:

答案 0 :(得分:1)

这意味着用户未在文本字段中输入数字。 但这不是您在堆栈跟踪中显示的错误。它表示您上次生成的R.java文件与引用资源ID的代码不匹配。完全重新编译您的应用以修复它。

答案 1 :(得分:1)

关闭力量的原因:

您日志中的

android.content.res.Resources$NotFoundException: String resource ID #0x7表示您有一些未知的String资源......

请检查string.xml文件夹中的values文件。

答案 2 :(得分:0)

检查xml文件是否正确输入EditText id作为editText1

答案 3 :(得分:-1)

你应该只给出整数范围的数字,NumberFormatException将出现在字符或特殊字符中,