Java 在对象实例化中使用字符串资源

Java 在对象实例化中使用字符串资源,java,android,string,Java,Android,String,我想使用Strings.xml中定义的字符串资源,如下所示: <string name="game_name_nassau2">Nassau2</string> 这个很好用。尝试使用字符串资源时,我说: private Game lGame = new Game(null, getResources().getString(R.string.game_name_nassau2), lpl, 100, true, false, false, false); 这会

我想使用Strings.xml中定义的字符串资源,如下所示:

    <string name="game_name_nassau2">Nassau2</string>
这个很好用。尝试使用字符串资源时,我说:

private Game lGame = new Game(null, getResources().getString(R.string.game_name_nassau2), lpl, 100, true, false, false, false);
这会使应用程序崩溃。(崩溃,这意味着我在实例化时得到了一个“sourcenotfound”错误)。我努力做一个好人,不在代码中嵌入字符串。 这是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);

依我看,我只把“拿骚2号”改成了
getResources().getString(R.string.game\u name\u Nassau2)
。我在活动中的第一个可执行行上设置了一个断点,但它从未到达那里

我做错了什么

谢谢

这会使应用程序崩溃


不清楚你的意思是什么,但你应该使用。
equals
而不是
=
当比较
字符串时

也许我说我正在使用

private Game lGame = new Game(null, getResources().getString(R.string.game_name_nassau2), lpl, 100, true, false, false, false);

在实例化中,它位于对象中的
onCreate
或任何其他方法之外。因此,我没有上下文,
getResources().getString(…)
需要上下文。似乎如果没有某种方法来获取上下文,这对应用程序资源是不起作用的。

当它崩溃时,日志是什么?使用.equals而不是==可能重复的“崩溃”意味着当包含
private lGame=游戏的活动时,我会收到一个“Source not found”错误(…
包含资源引用,而不是文字“Nassau2”。==vs..equals()似乎是第二个问题。请发布错误/异常的堆栈跟踪。这只是活动生命周期。在
onCreate()之前,活动未初始化为工作上下文
。对象实例化期间的成员变量初始化太早。因为我希望对象
lGame
可用于整个活动,所以我应该在我执行的位置(在对象实例化中)声明它,并在上下文中的第一个可用时刻(即
onCreate()之后)初始化它
。这是否正确?是的,声明为成员变量并在onCreate中初始化是可以的。
    private Game lGame = new Game(null, getResources().getString(R.string.game_name_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);