Android字符串资源不可访问:android.content.res.Resources $ NotFoundException:字符串资源ID

时间:2016-12-01 18:06:17

标签: java android xml string r.java-file

我试图将所有字符串都放入strings.xml文件中。 现在,如果我尝试运行它,我会得到这个:

E/AndroidRuntime: FATAL EXCEPTION: main
              Process: de.hsd.ip2.wgapp, PID: 20467
              android.content.res.Resources$NotFoundException: String resource ID #0x7f060061
                  at android.content.res.Resources.getText(Resources.java:321)
                  at android.content.res.Resources.getString(Resources.java:407)
                  at de.hsd.ip2.wgapp.Firebase.DatabaseContact.addRoom(DatabaseContact.java:215)
                  at de.hsd.ip2.wgapp.DialogfragmentCleaningSchedule$5.onDataChange(DialogfragmentCleaningSchedule.java:242)
                  at com.google.firebase.database.Query$1.onDataChange(Unknown Source)
                  at com.google.android.gms.internal.zzajp.zza(Unknown Source)
                  at com.google.android.gms.internal.zzakp.zzcxi(Unknown Source)
                  at com.google.android.gms.internal.zzaks$1.run(Unknown Source)
                  at android.os.Handler.handleCallback(Handler.java:739)
                  at android.os.Handler.dispatchMessage(Handler.java:95)
                  at android.os.Looper.loop(Looper.java:135)
                  at android.app.ActivityThread.main(ActivityThread.java:5294)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at java.lang.reflect.Method.invoke(Method.java:372)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)

这是我的strings.xml:

 <resources>
 [...]
 <!-- Firebase Strings -->
 <string name="fLat">Flat</string>
 [...]
 </resources>

R文件包含该字符串的条目:

public static final int fLat=0x7f060061;

如果我右键点击任何R.strings.fLat并使用&#34;查找用法&#34;我在属性值看到正确的fLat:

Attribute Value

哦,我试图得到它,我也尝试得到另一个字符串,那个工作,我甚至改名为fLat,但它只是没有工作..

fReference.child(Resources.getSystem().getString(R.string.fLat)).child(Integer.toString(flatId))
            .child(Resources.getSystem().getString(R.string.cleaning))
            .child(title)
            .setValue(r)

我没有问题就得到了R.string.cleaning ..

提前感谢任何想法:)

1 个答案:

答案 0 :(得分:1)

您无法使用Resources.getSystem()访问资源。与API中定义的一样:

返回一个全局共享资源对象,该对象仅提供对系统资源的访问权限(无应用程序资源)

相反,你应该使用像

这样的东西

context.getResources().getString(R.string.fLat)

或者如果您在活动中:

getResources().getString(R.string.fLat)

所以你的代码必须是:

fReference.child(getResources().getString(R.string.fLat)).child(Integer.toString(flatId))
            .child(getResources().getString(R.string.cleaning))
            .child(title)
            .setValue(r)