我正在开发一个Android项目,因为我必须在本地机器和服务器上进行测试,我想给出一个base-url。我一直收到如下所述的错误。当我检查SO时,这是获取URL的方式,我做错了什么。下面的错误和之后的代码。
07-20 13:19:54.612 3795-3795/com.example.TestLunch E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.TestLunch, PID: 3795
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.TestLunch/com.example.TestLunch.Activity.RestaurantList}: android.content.res.Resources$NotFoundException: String resource ID #0x7f04000e
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2236)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5257)
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:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x7f04000e
代码抛出错误。
public class RestaurantList extends ListActivity {
// Below line throws the error.
String restaurantList = Resources.getSystem().getString(R.string.baseUrl)+"restaurant/listing";
}
Strings.xml:
<string name="baseUrl">http://192.168.178.60:8080/</string>
任何帮助都会很好。谢谢。
更新
这也失败了:
String restaurantList = getResources().getString(R.string.baseUrl)+"restaurant/listing";
更新
这也失败了
public class RestaurantList extends ListActivity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.restos);
RestTemplate restTemplate = StaticRestTemplate.getRest();
String restaurantList = Resources.getSystem().getString(R.string.baseUrl)+"restaurant/listing";
}
答案 0 :(得分:2)
我认为有两个问题:
您不应该访问构造函数或字段初始值设定项中的资源,现在为时尚早。正确的地方是onCreate
方法。
Resources.getSystem().getString()
只能查找您在应用程序中定义的系统资源。您应该使用活动中的getString。
在你的情况下:
public class RestaurantList extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.restos);
RestTemplate restTemplate = StaticRestTemplate.getRest();
String restaurantList = getString(R.string.baseUrl) + "restaurant/listing";
}
答案 1 :(得分:0)
请试试这个:
String restaurantList = getApplication().getResources().getString(R.string.baseUrl) + "restaurant/listing";
答案 2 :(得分:0)
问题是您尝试从方法onCreate访问字符串资源。如果在onCreate()方法中添加代码,问题就解决了。
像这样工作@Override
public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
super.onCreate(savedInstanceState, persistentState);
String restaurantList = Resources.getSystem().getString(R.string.baseUrl)+"restaurant/listing";
}