代码之家  ›  专栏  ›  技术社区  ›  Woton Sampaio

` getresources().getstring`生成异常

  •  1
  • Woton Sampaio  · 技术社区  · 7 年前

    在我的申请中,我有以下几行:

    String ci = getResources().getString(R.string.cidades);

    这将在运行应用程序时引发异常。这只发生在7.1版和8版的android中,在之前的正常轮盘中,有人知道为什么吗?

    日志:

    java.lang.runtimeexception:无法启动活动组件信息{insidetechnology.studio.ostdor.anestesiaanimal/insidetechnology.studio.ostdor.anestesiaanimal.autenticacao.state}:java.lang.indexoutboundsexception 在android.app.activitythread.performlaunchactivity上(activitythread.java:2817) 在android.app.activitythread.handleLaunchActivity上(activitythread.java:2892) 在android.app.activitythread.-wrap11(未知源:0) 在android.app.activitythread$h.handleMessage上(activitythread.java:1593) 在android.os.handler.DispatchMessage上(handler.java:105) 在android.os.looper.loop上(looper.java:164) 在android.app.activitythread.main上(activitythread.java:6541) 在java.lang.reflect.method.invoke(本机方法) 在com.android.internal.os.zygate$methodandargscaller.run上(zygate.java:240) 在com.android.internal.os.zygenetinit.main上(zygenetinit.java:767) 引起原因:java.lang.IndexOutfoundsException 在android.content.res.stringblock.nativegetstring(本机方法) 在android.content.res.stringblock.get上(stringblock.java:82) 在android.content.res.assetmanager.getResourceValue上(assetmanager.java:236) 在android.content.res.assetmanager.getresourcetext上(assetmanager.java:164) 在android.content.res.resources.gettext上(resources.java:334) 在android.content.res.resources.getstring上(resources.java:432) 在insidetechnology.studio.ostdor.anestesiaanimal.autenticacao.state.oncreate(state.java:38) 在android.app.activity.performcreate上(activity.java:6975) 在android.app.instrumentation.callActivityOnCreate上(instrumentation.java:1213) 在android.app.activitythread.performlaunchactivity上(activitythread.java:2770) 在android.app.activitythread.handleLaunchActivity上(activitythread.java:2892) 在android.app.activitythread.-wrap11(未知来源:0) 在android.app.activitythread$h.handleMessage上(activitythread.java:1593) 在android.os.handler.DispatchMessage上(handler.java:105) 在android.os.looper.loop上(looper.java:164) 在android.app.activitythread.main上(activitythread.java:6541) 在java.lang.reflect.method.invoke(原生方法) 在com.android.internal.os.zygate$methodandargscaller.run上(zygate.java:240) 在com.android.internal.os.zygenetinit.main上(zygenetinit.java:767)

    1 回复  |  直到 7 年前
        1
  •  1
  •   Liar    7 年前

    解决方法可以使用 string-array 而不是 string

    <string-array name="items">
    <item>item0</item>
    <item>item1</item>
    ...
    </string-array>
    

    然后

    String[] items = getResources().getStringArray(R.array.items);
    

    我不知道为什么,但也许你的字符串在新的android版本中超出了字符串资源的限制