【发布时间】:2016-08-18 08:32:19
【问题描述】:
我正在尝试访问我的 res/stringsxml 中的字符串值:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:locale="fr">
<string name="app_name">Solutis</string>
</resources>
这里我正在尝试调用:package fr.package;
公共类 SOAP 扩展应用程序{
String NAMESPACE;
String URL;
String SOAP_ACTION;
@Override
public void onCreate() {
super.onCreate();
NAMESPACE = getResources().getString(R.string.NAMESPACE);
URL = getResources().getString(R.string.URL);
SOAP_ACTION = getResources().getString(R.string.SOAP_ACTION);
}
private static String TAG = SOAP.class.getSimpleName();
public Reponse envoieDemande(String method, String xml) {
}
}
错误:
08-18 04:21:18.839 27859-27874/? E/AndroidRuntime:致命异常: IntentService[EnvoieService] 进程:fr.package,PID:27859 java.lang.NullPointerException 在 android.content.ContextWrapper.getResources(ContextWrapper.java:89) 在 fr.package.SOAP.(SOAP.java:37) 在 fr.package.notifications.EnvoieService.onHandleIntent(EnvoieService.java:96) 在 android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:136) 在 android.os.HandlerThread.run(HandlerThread.java:61)
我如何调用 SOAP 类:
private class AsyncSoapCall extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
SOAP soap = new SOAP();
//soap.envoieDemande("SendLead", xml);
Reponse ret = soap.envoieDemande("SendLead", xml);
System.out.println(ret.getCode() + ret.getMessage() + ret.getOption());
if (ret.getCode().equals("1")) {
GoogleAnalytics ga= new GoogleAnalytics(getActivity());
ga.envoieTracker(idApplication, demandeId, logement, typeForm);
}
return null;
}
编辑:在 onCreate() 中初始化
public class SOAP extends Application {
String NAMESPACE;
String URL;
String SOAP_ACTION;
@Override
public void onCreate() {
NAMESPACE = getResources().getString(R.string.NAMESPACE);
URL = getResources().getString(R.string.URL);
SOAP_ACTION = getResources().getString(R.string.SOAP_ACTION);
}
}
没用
【问题讨论】:
-
将此行
String NAMESPACE = context.getResources().getString(R.string.app_name);放入onCreate之后super.onCreate()。 -
@Vucko 奇怪的是它在调试模式下没有进入 onCreate
-
那是因为你有 2 个
onCreate方法,将一个与@Override一起使用并删除另一个。 -
@Vucko 是的,我刚刚编辑,但它没有进入,请看我的编辑
标签: android string android-resources