Android:尝试在List活动类中获取资源时找不到字符串资源

时间:2015-07-20 12:35:00

标签: android string

我正在开发一个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";
}

3 个答案:

答案 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";
}