无法从headers.xml访问string.xml

时间:2016-09-06 17:31:30

标签: java android xml nullpointerexception

我有我的headers.xml,我试图将所有文本移动到String.xml,并尝试从headers.xml访问

这是header.xml的一个片段

<header android:title="@string/str_Configuracion_general"/>
<header android:id="@+id/general_settings"
    android:title="General"
    android:fragment="com.thinkbig.interfaz.GeneralFragment"/>
<header android:id="@+id/paradas_settings"
    android:title="Paradas"
    android:fragment="com.thinkbig.interfaz.ParadasFragment"/>

我没有在android:title =“XXXXXXXXXX”中使用纯文本,而是使用strings.xml,其中包含一个以“XXXXXXXXXX”作为值的字符串。

但我得到下面列出的错误并且不知道为什么,我之前已经使用过这种方式没有任何问题,但它在这个xml中不起作用

/com.thinkbig.interfaz E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.thinkbig.interfaz, PID: 21669
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.thinkbig.interfaz/com.thinkbig.interfaz.MainActivity}: java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.String java.lang.CharSequence.toString()' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5422)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.String java.lang.CharSequence.toString()' on a null object reference
at com.thinkbig.interfaz.MainActivity.existeCabina2(MainActivity.java:1030)
at com.thinkbig.interfaz.MainActivity.checkBornes(MainActivity.java:916)
at com.thinkbig.interfaz.MainActivity.onCreate(MainActivity.java:2381)
at android.app.Activity.performCreate(Activity.java:6251)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
at android.app.ActivityThread.-wrap11(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5422) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

这里是strings.xml片段:

<string name="str_Configuracion_general">Configuración general</string>

他们在res里面的不同文件夹中,也许我正在解决错误的@ string / str_Configuracion_general

Res folder

主要活动行1026等等:

    public boolean existeCabina2(List<Header> target){
    boolean encontre = false;
    Iterator<Header> it = target.iterator();
    while (it.hasNext() && !encontre){
        if(it.next().title.toString().equals("Cabina 2")){  //line 1030 shown in error
            encontre = true;
        }
    }
    return encontre;
}

如果我使用纯文本,代码可以正常工作,但如果我更改headers.xml上的纯文本以从strings.xml获取字符串,则会抛出错误。

也许是因为“@ string / str_Configuracion_general”是一个int(引用),然后我试图做一个.toString()。 如何使用该引用的字符串?所以我可以将它用作普通字符串。

0 个答案:

没有答案