TextView.setText()引发处理程序引发ResourceNotFound异常(Android Studio)

时间:2018-08-29 15:19:54

标签: android exception textview

嘿开发者在那里

首先,所有这些都在Android Studio中 我有一个从可运行对象调用的处理程序:

private Runnable runnable = new Runnable() {
        @Override
        public void run() {
            handler.postDelayed(this, 1000);
            fight();
        }
    };

称为“ fight()”方法。此方法基本上应该做的是设置TextView的文本:

tv_playerdmg.setText(dmg); 

在这一行,程序将引发“ ResourceNotFound”异常:

E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.example.alexander.rpg, PID: 31642
                  android.content.res.Resources$NotFoundException: String resource ID #0x8f5
                      at android.content.res.Resources.getText(Resources.java:1184)
                      at android.widget.TextView.setText(TextView.java:5218)
                      at com.example.alexander.rpg.Fight.fight(Fight.java:398)
                      at com.example.alexander.rpg.Fight$1.run(Fight.java:68)
                      at android.os.Handler.handleCallback(Handler.java:751)
                      at android.os.Handler.dispatchMessage(Handler.java:95)
                      at android.os.Looper.loop(Looper.java:154)
                      at android.app.ActivityThread.main(ActivityThread.java:6816)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1563)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1451)

我不知道为什么要这样做,另一方面,我正在更改处理程序中的按钮功能(如果是:D的话),这不会造成任何问题。

有人有主意吗?

问候白米饭

2 个答案:

答案 0 :(得分:0)

我刚刚将“ dmg”更改为Integer.toString(dmg),这很好用。

答案 1 :(得分:0)

setText应该在ui线程上运行。如下所示:

  runOnUiThread(new Runnable() {
      @Override
      public void run() {
        fight();
      }
      });