2013-08-13 3 views
0

Android 프로젝트에서 문맥 값이 아닌 정적 메서드에서 문자열 값을 가져 오는 방법이 필요했습니다. 이를 위해android : name 값을 변경할 때 NullPointerException이 발생했습니다.

, 나는 해결책 How can I get a resource content from a static context?을 구현했습니다 나는 응용 프로그램 태그에 안드로이드 추가 한 : name 속성 : 이제 응용 프로그램이 시작을

<application android:label="@string/app_name" android:allowBackup="true" android:name=".App"> 

을하지만, 실행시 NullPointerException이 발생 다음 보조 페이지에서 OnCreate 코드의 라인() :

findViewById(R.layout.level).setDrawingCacheEnabled(true); 

중요한 부분은 R.layout.level ("수준"페이지, level.xml을 설명하는 문서의 이름이다),이 객체가 될 것으로 보인다 지금 null입니다. 여기에 스택 추적 :

23:42:33.255 3550 com.UpMap ERROR AndroidRuntime FATAL EXCEPTION: main 
23:42:33.255 3550 com.UpMap ERROR AndroidRuntime java.lang.RuntimeException: Unable to start activity ComponentInfo{com.UpMap/com.UpMap.LevelActivity}: java.lang.NullPointerException 
23:42:33.255 3550 com.UpMap ERROR AndroidRuntime  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
23:42:33.255 3550 com.UpMap ERROR AndroidRuntime  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
23:42:33.255 3550 com.UpMap ERROR AndroidRuntime  at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
23:42:33.255 3550 com.UpMap ERROR AndroidRuntime  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
23:42:33.255 3550 com.UpMap ERROR AndroidRuntime  at android.os.Handler.dispatchMessage(Handler.java:99) 
23:42:33.255 3550 com.UpMap ERROR AndroidRuntime  at android.os.Looper.loop(Looper.java:123) 
23:42:33.255 3550 com.UpMap ERROR AndroidRuntime  at android.app.ActivityThread.main(ActivityThread.java:4627) 
23:42:33.255 3550 com.UpMap ERROR AndroidRuntime  at java.lang.reflect.Method.invokeNative(Native Method) 
23:42:33.255 3550 com.UpMap ERROR AndroidRuntime  at java.lang.reflect.Method.invoke(Method.java:521) 
23:42:33.255 3550 com.UpMap ERROR AndroidRuntime  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
23:42:33.255 3550 com.UpMap ERROR AndroidRuntime  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
23:42:33.255 3550 com.UpMap ERROR AndroidRuntime  at dalvik.system.NativeStart.main(Native Method) 
23:42:33.255 3550 com.UpMap ERROR AndroidRuntime Caused by: java.lang.NullPointerException 
23:42:33.255 3550 com.UpMap ERROR AndroidRuntime  at com.UpMap.LevelActivity.onCreate(LevelActivity.java:64) 
23:42:33.255 3550 com.UpMap ERROR AndroidRuntime  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
23:42:33.255 3550 com.UpMap ERROR AndroidRuntime  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
23:42:33.255 3550 com.UpMap ERROR AndroidRuntime  ... 11 more 

어떻게 해결할 수 있습니까? 원래 솔루션은 대부분의 사람들에게는 괜찮은 것처럼 보이지만 나에게는 그렇지 않습니다! 그 뭔가가 android : name 속성과 관련이 있습니까?

+0

시도를 작동

findViewById(R.id.LevelLayout).setDrawingCacheEnabled(true); 

: 는 그럼으로 라인을 변경했습니다 NPE를 발생시키는 활동) – Sw4Tish

+0

부적절한 것 같습니다 – TheUnexpected

답변

0

. 지금은 내가 이름을 의미한다 ("com.google.gms.maps.GoogleMaps"와 같은 속성의 전체 이름을 넣어

0

리소스를 사용하기 전에 레이아웃을 팽창시켜야합니다. 대신 R.layout.level를 참조, 나는이 android:id="@+id/LevelLayout"과 함께 LevelActivity의 루트 레이아웃에 ID를 부여했습니다 :이 방법으로 자신에 의해 해결 한

LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
RelativeLayout mFrame = (RelativeLayout)inflater.inflate(R.layout.level, null); 
//Now you can use/reference its resources/views etc. 
mFrame.setDrawingCacheEnabled(true); 
+0

그것은 나를 'android.view.InflateException : 이진 XML 파일 라인 # 31 : inflate 클래스 조각 오류 ' inflate 메서드를 실행할 때 – TheUnexpected

+0

level.xml을 보여줄 수 있습니까? 레이아웃 파일 – Manu

관련 문제