我想使用Strings.xml中定义的字符串资源,如下所示:
<string name="game_name_nassau2">Nassau2</string>
当我实例化一个正在查看String参数的对象时。使用文字,我说:
private Game lGame = new Game(null,"Nassau2", lpl, 100, true, false, false, false);
这很好用。我试着使用字符串资源:
private Game lGame = new Game(null, getResources().getString(R.string.game_name_nassau2), lpl, 100, true, false, false, false);
这会导致应用崩溃。 (崩溃,意思是我在实例化时遇到“源未找到”错误)。我想成为一个好人而不是在代码中嵌入字符串。 这是LogCat错误......
11-20 12:31:18.105: E/AndroidRuntime(7158): FATAL EXCEPTION: main
11-20 12:31:18.105: E/AndroidRuntime(7158): java.lang.RuntimeException: Unable to instantiate application android.app.Application: java.lang.IllegalStateException: Unable to get package info for com.aci.golfgames; is package not installed?
11-20 12:31:18.105: E/AndroidRuntime(7158): at android.app.LoadedApk.makeApplication(LoadedApk.java:509)
11-20 12:31:18.105: E/AndroidRuntime(7158): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4417)
11-20 12:31:18.105: E/AndroidRuntime(7158): at android.app.ActivityThread.access$1300(ActivityThread.java:141)
11-20 12:31:18.105: E/AndroidRuntime(7158): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)
11-20 12:31:18.105: E/AndroidRuntime(7158): at android.os.Handler.dispatchMessage(Handler.java:99)
11-20 12:31:18.105: E/AndroidRuntime(7158): at android.os.Looper.loop(Looper.java:137)
11-20 12:31:18.105: E/AndroidRuntime(7158): at android.app.ActivityThread.main(ActivityThread.java:5103)
11-20 12:31:18.105: E/AndroidRuntime(7158): at java.lang.reflect.Method.invokeNative(Native Method)
11-20 12:31:18.105: E/AndroidRuntime(7158): at java.lang.reflect.Method.invoke(Method.java:525)
11-20 12:31:18.105: E/AndroidRuntime(7158): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
11-20 12:31:18.105: E/AndroidRuntime(7158): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
11-20 12:31:18.105: E/AndroidRuntime(7158): at dalvik.system.NativeStart.main(Native Method)
11-20 12:31:18.105: E/AndroidRuntime(7158): Caused by: java.lang.IllegalStateException: Unable to get package info for com.aci.golfgames; is package not installed?
11-20 12:31:18.105: E/AndroidRuntime(7158): at android.app.LoadedApk.initializeJavaContextClassLoader(LoadedApk.java:369)
11-20 12:31:18.105: E/AndroidRuntime(7158): at android.app.LoadedApk.getClassLoader(LoadedApk.java:322)
11-20 12:31:18.105: E/AndroidRuntime(7158): at android.app.LoadedApk.makeApplication(LoadedApk.java:501)
11-20 12:31:18.105: E/AndroidRuntime(7158): ... 11 more
我所改变的只是一行
private Game lGame = new Game(null,"Nassau2", lpl, 100, true, false, false, false);
到
private Game lGame = new Game(null, getResources().getString(R.string.game_name_nassau2), lpl, 100, true, false, false, false);
i,我改变的只有"Nassau2"
到getResources().getString(R.string.game_name_nassau2)
。我在活动的第一个可执行行上设置了一个断点,它永远不会到达那里。
我做错了什么?
由于
答案 0 :(得分:0)
这会导致应用崩溃。
目前尚不清楚您的意思,但在比较equals
==
代替Strings
答案 1 :(得分:0)
当我说我正在使用
时,也许我不清楚private Game lGame = new Game(null, getResources().getString(R.string.game_name_nassau2), lpl, 100, true, false, false, false);
在实例化中,它位于onCreate
或对象内的任何其他方法之外。因此,我没有上下文,getResources().getString(...)
需要上下文。似乎没有某种解决方案来获取上下文,这对应用程序资源不起作用。