2013-08-25 2 views
0

신생 안드로이드 개발입니다. 내가리소스를 검색하려고하지만 어떤 이유로 든 오류가 발생했습니다

int defaultValue = getResources().getInteger(R.string.saved_high_score_default); 

을 할 때 사용할 때 내가 그러나 오류를 얻고 자 android development

: 난 그들의 튜토리얼을 다음하고 그것은 완벽하게 잘 작동

int defaultValue = (int)R.string.saved_high_score_default; 

. 여기

는 오류가 난 얻을 수있다 :

08-25 07:38:13.228: E/AndroidRuntime(3436): FATAL EXCEPTION: main 
08-25 07:38:13.228: E/AndroidRuntime(3436): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.android.fragments/com.example.android.fragments.MainActivity}: android.content.res.Resources$NotFoundException: Resource ID #0x7f040003 type #0x3 is not valid 
08-25 07:38:13.228: E/AndroidRuntime(3436):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110) 
08-25 07:38:13.228: E/AndroidRuntime(3436):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135) 
08-25 07:38:13.228: E/AndroidRuntime(3436):  at android.app.ActivityThread.access$700(ActivityThread.java:143) 
08-25 07:38:13.228: E/AndroidRuntime(3436):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1241) 
08-25 07:38:13.228: E/AndroidRuntime(3436):  at android.os.Handler.dispatchMessage(Handler.java:99) 
08-25 07:38:13.228: E/AndroidRuntime(3436):  at android.os.Looper.loop(Looper.java:137) 
08-25 07:38:13.228: E/AndroidRuntime(3436):  at android.app.ActivityThread.main(ActivityThread.java:4953) 
08-25 07:38:13.228: E/AndroidRuntime(3436):  at java.lang.reflect.Method.invokeNative(Native Method) 
08-25 07:38:13.228: E/AndroidRuntime(3436):  at java.lang.reflect.Method.invoke(Method.java:511) 
08-25 07:38:13.228: E/AndroidRuntime(3436):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004) 
08-25 07:38:13.228: E/AndroidRuntime(3436):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771) 
08-25 07:38:13.228: E/AndroidRuntime(3436):  at dalvik.system.NativeStart.main(Native Method) 
08-25 07:38:13.228: E/AndroidRuntime(3436): Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f040003 type #0x3 is not valid 
08-25 07:38:13.228: E/AndroidRuntime(3436):  at android.content.res.Resources.getInteger(Resources.java:838) 
08-25 07:38:13.228: E/AndroidRuntime(3436):  at com.example.android.fragments.HeadlinesFragment.onStart(HeadlinesFragment.java:60) 
08-25 07:38:13.228: E/AndroidRuntime(3436):  at android.support.v4.app.Fragment.performStart(Fragment.java:1332) 
08-25 07:38:13.228: E/AndroidRuntime(3436):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:906) 
08-25 07:38:13.228: E/AndroidRuntime(3436):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1080) 
08-25 07:38:13.228: E/AndroidRuntime(3436):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062) 
08-25 07:38:13.228: E/AndroidRuntime(3436):  at android.support.v4.app.FragmentManagerImpl.dispatchStart(FragmentManager.java:1815) 
08-25 07:38:13.228: E/AndroidRuntime(3436):  at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:518) 
08-25 07:38:13.228: E/AndroidRuntime(3436):  at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1178) 
08-25 07:38:13.228: E/AndroidRuntime(3436):  at android.app.Activity.performStart(Activity.java:5170) 
08-25 07:38:13.228: E/AndroidRuntime(3436):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2083) 
08-25 07:38:13.228: E/AndroidRuntime(3436):  ... 11 more 

어떤 생각?

답변

2

가 좋아 :

int defaultValue = getResources().getInteger(R.string.saved_high_score_default); 

시도 뭔가 같은 :

+0

너의 작품이 좋을거야. 그. 고마워. –

1

Rs.string.saved_high_score_default에 저장된 이름으로 values.xml에 값이 없습니다.

그건 내 마음 속에서 그렇게 복잡한 지나친 방법입니다. 대부분의 상황에서 xml에서 읽는 대신 기본값 (개인 최종 int DEFAULT_VALUE)에 대한 Java 상수를 사용하고 있습니다. 어쩌면 내가 오해 해요,하지만 그건 그냥 오타라고 생각,

int defaultValue = Integer.valueOf(getResources().getString(R.string.saved_high_score_default)); 
+0

내가 문자열에 값이없는 경우 .xml 어떻게'int defaultValue = (int) R.string.saved_high_score_default;'완벽하게 작동합니까? –

+1

"HighScore"라는 정수 값을 읽지 않고 "HighScore"를 포함하는 문자열의 자원 ID 값을 지정합니다. 어느 정도 큰 숫자가 될 것입니다. 그들의 예는 정말로 나쁩니다. –

+0

당신은 정확합니다. 반환 된 값이 이상한 숫자인지 확인 했으니 까. 그러면 그 번호를 어떻게 알아 내야할까요? –

0

이 행은 문자열 리소스에서 int를 얻기 위해 노력하고있다 튜토리얼에서.

getResources().getInteger()는 예를 들어, integer의 자원 값을한다 : 어딘가에 값 XML로 정의 될 수

getResources().getInteger(R.integer.my_int_value_key); 

좋아 :

<integer name="my_int_value_key">100</integer> 
+0

엘리, 너의 것 (값이 정수가 아닌 경우를 제외하고는 작동하지 않는 것 같습니다 (어떤 경우에는 변환 할 수 없다고 가정합니다 // 정수로 구문 분석합니다) –

관련 문제