0

我遇到了一个问题,使我的应用程序崩溃并将其写在 logcat 上:

10-18 13:13:13.950: E/AndroidRuntime(748): 致命异常: main 10-18 13:13:13.950: E/AndroidRuntime(748): android.content.res.Resources$NotFoundException: 字符串资源 ID # 0x0 10-18 13:13:13.950: E/AndroidRuntime(748): 在 android.content.res.Resources.getText(Resources.java:239) 10-18 13:13:13.950: E/AndroidRuntime(748):在 android.widget.TextView.setText(TextView.java:3844) 10-18 13:13:13.950: E/AndroidRuntime(748): 在 com.example.lightalarmclock.AddBox.onClick(AddBox.java:89) 10- 18 13:13:13.950: E/AndroidRuntime(748): 在 android.view.View.performClick(View.java:4240) 10-18 13:13:13.950: E/AndroidRuntime(748): 在 android.view。查看$PerformClick.run(View.java:17721) 10-18 13:13:13.950: E/AndroidRuntime(748): 在 android.os.Handler.handleCallback(Handler.java:730) 10-18 13:13: 13.950:E/AndroidRuntime(748):在 android.os。Handler.dispatchMessage(Handler.java:92) 10-18 13:13:13.950: E/AndroidRuntime(748): 在 android.os.Looper.loop(Looper.java:137) 10-18 13:13:13.950: E/AndroidRuntime(748): 在 android.app.ActivityThread.main(ActivityThread.java:5103) 10-18 13:13:13.950: E/AndroidRuntime(748): 在 java.lang.reflect.Method.invokeNative(Native方法) 10-18 13:13:13.950: E/AndroidRuntime(748): at java.lang.reflect.Method.invoke(Method.java:525) 10-18 13:13:13.950: E/AndroidRuntime(748) : 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 10-18 13:13:13.950: E/AndroidRuntime(748): 在 com.android.internal.os.ZygoteInit.main (ZygoteInit.java:553)10-18 13:13:13.950:E/AndroidRuntime(748):在 dalvik.system.NativeStart.main(本机方法)在 android.os.Looper.loop(Looper.java:137) 10-18 13:13:13.950: E/AndroidRuntime(748): 在 android.app.ActivityThread.main(ActivityThread.java:5103) 10-18 13 :13:13.950: E/AndroidRuntime(748): at java.lang.reflect.Method.invokeNative(Native Method) 10-18 13:13:13.950: E/AndroidRuntime(748): at java.lang.reflect.Method .invoke(Method.java:525) 10-18 13:13:13.950: E/AndroidRuntime(748): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 10-18 13 :13:13.950: E/AndroidRuntime(748): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 10-18 13:13:13.950: E/AndroidRuntime(748): 在 dalvik。 system.NativeStart.main(本机方法)在 android.os.Looper.loop(Looper.java:137) 10-18 13:13:13.950: E/AndroidRuntime(748): 在 android.app.ActivityThread.main(ActivityThread.java:5103) 10-18 13 :13:13.950: E/AndroidRuntime(748): at java.lang.reflect.Method.invokeNative(Native Method) 10-18 13:13:13.950: E/AndroidRuntime(748): at java.lang.reflect.Method .invoke(Method.java:525) 10-18 13:13:13.950: E/AndroidRuntime(748): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 10-18 13 :13:13.950: E/AndroidRuntime(748): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 10-18 13:13:13.950: E/AndroidRuntime(748): 在 dalvik。 system.NativeStart.main(本机方法)E/AndroidRuntime(748): at java.lang.reflect.Method.invokeNative(Native Method) 10-18 13:13:13.950: E/AndroidRuntime(748): at java.lang.reflect.Method.invoke(Method. java:525) 10-18 13:13:13.950: E/AndroidRuntime(748): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 10-18 13:13:13.950: E/AndroidRuntime(748): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 10-18 13:13:13.950: E/AndroidRuntime(748): 在 dalvik.system.NativeStart.main (本机方法)E/AndroidRuntime(748): at java.lang.reflect.Method.invokeNative(Native Method) 10-18 13:13:13.950: E/AndroidRuntime(748): at java.lang.reflect.Method.invoke(Method. java:525) 10-18 13:13:13.950: E/AndroidRuntime(748): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 10-18 13:13:13.950: E/AndroidRuntime(748): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 10-18 13:13:13.950: E/AndroidRuntime(748): 在 dalvik.system.NativeStart.main (本机方法)在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 10-18 13:13:13.950: E/AndroidRuntime(748): 在 dalvik.system.NativeStart.main(Native Method)在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 10-18 13:13:13.950: E/AndroidRuntime(748): 在 dalvik.system.NativeStart.main(Native Method)

我的应用程序正在更新按键上的文本,有点像 android 闹钟应用程序 (4.3) 在添加警报时按下按钮并从左到右发送它们。

所以我想出了以下内容:

if (pos1 == 0) {
            TextView Pos1 = (TextView)findViewById(R.id.TextView05);
            Pos1.setText("1");
            pos1 = 1;
        } else {

            //Moving all positions for a one
            TextView Pos1 = (TextView)findViewById(R.id.TextView04);
            Pos1.setText(pos3);
            pos4 = pos3;
            TextView Pos2 = (TextView)findViewById(R.id.TextView03);
            Pos2.setText(pos2);
            pos3 = pos2;
            TextView Pos3 = (TextView)findViewById(R.id.TextView01);
            Pos3.setText(pos1);
            pos2 = pos1;

            //imputing 
            TextView Pos5 = (TextView)findViewById(R.id.TextView05);
            Pos5.setText("1");

            pos1 = 0;
        }

导致问题的部分在“else”语句中//移动所有位置注释是游戏崩溃的部分。因此,在应用程序 GUI 中,您按数字 1,它在最右边绘制而不是 0(这部分有效),然后您再次按 1 及其配偶将前一个 1 向左移动并在最右边添加另一个 1,但这会崩溃我的应用程序。

我试图修复它并用谷歌搜索,但我就是想不通。

4

3 回答 3

0

您必须为 setText 提供一个字符串,否则 android 将在资源中查找一个字符串,其 id 为您提供的整数。所以你必须改变

Pos1.setText(pos3);

 Pos1.setText(String.valueOf(pos3));
于 2013-10-18T17:32:10.860 回答
0

不要将整数值直接分配给 setText 方法,因为 value 应该是一个字符串。如果值为整数,那么 android 将开始寻找具有 id(您提供的整数)的资源字符串。

pos1.setText(""+pos3);

或者

Pos1.setText(Integer.toString(pos3));

于 2016-08-17T05:16:10.013 回答
-1

您的 pos3 , pos2 被引用为 int id from R.string。您必须将它们转换为文本,然后设置文本

于 2013-10-18T17:30:43.387 回答