我有我的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
主要活动行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()。 如何使用该引用的字符串?所以我可以将它用作普通字符串。