2015-07-20 38 views
0

我在Android項目工作的資源字符串資源沒有發現我有上試本地計算機和服務器,我想過放棄基本的URL。我不斷收到如下所述的錯誤。正如我檢查一樣,這是獲取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"; 
} 
+1

爲什麼你就不能使用getResources()的getString(R.string.baseUrl); ? –

+0

@ 4k3R:這在非活動類中不起作用,所以我開始使用它。 –

+0

@ 4k3R:試過了,仍然是錯誤。 –

回答

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"; 
    } 
+0

不知何故,這工作。非常感謝。 :-) –

0

請試試這個:

String restaurantList = getApplication().getResources().getString(R.string.baseUrl) + "restaurant/listing"; 
+0

試過了,仍然是錯誤。 –

+0

難道你是在使用多個strings.xml文件嗎? 像值/ strings.xml中和值-V21/strings.xml中 – W3hri

+0

不,我不,你可以檢查主後,我已經編輯到包括我的嘗試。 –

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"; 
} 
+0

我仍然收到錯誤,請注意,該類擴展ListActivity,而不是活動。 –

+0

將onCreate方法放在RestaurantList中。這是一個ListActivity,所以你可以使用onCreate。 – br00

+0

我有它,只是我的onCreate方法沒有第二個參數,是否需要?檢查我的主要帖子的底部,我已經編輯它。 –