마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

개발중 에러가 납니다(java.lang.NullPointerException)

0 추천

strings.xml파일에 string-array소스를 등록을 해 놓았는데도java.lang.NullPointerException 에러가 뜨네요


 public void check2(){
  //ArrayList<String> app_cc = new ArrayList<String>();
  PackageManager pm = getPackageManager();
  loadingtext_b.setText("앱 연동 확인중..");
  List< ApplicationInfo > appList = pm.getInstalledApplications( 0 );
  int nSize = appList.size();
  int appsize = app_c.length;
  for( int c = 0; c < appsize; c++ ) {
   if(appcheck!=1){
    for( int i = 0; i < nSize; i++ ) {
     if(appList.get(i).packageName.indexOf(app_c[c]) != -1){
      appcheck=1;
     }
    }
   }
  }
  if(appcheck==0){
   loadingtext_b.setText("앱 로딩 실패");
   AlertDialog.Builder builder = new AlertDialog.Builder(this);
   builder.setTitle("앱 연동 오류");
   builder.setMessage("MCPE Launcher 에 등록되어있는 앱 에서는\nMCPE와 관련된 아~무 앱도 없습니다.");
   builder.setNeutralButton("Close", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
     finish();
    }
   });
   builder.show();
  }
  if(appcheck==1){
   checkend();
  }
 }
public class Loading extends Activity {

 private int appcheck = 0;
 URL url; private String nversion_c; URLConnection conn;
 private int version_c=100;
 private TextView loadingtext_a;
 private TextView loadingtext_b;
 String[] app_c = getResources().getStringArray(R.array.apps_c);
 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.loading);
  loadingtext_a = (TextView)findViewById(R.id.loadingtext_a);
  loadingtext_b = (TextView)findViewById(R.id.loadingtext_b);
  Typeface font = Typeface.createFromAsset(getAssets(), "NanumGothic.ttf"); 
  loadingtext_a.setTypeface(font);
  loadingtext_b.setTypeface(font);
  check1();
 }

 

관련 소스만 첨부해 두었습니다.

 

오류코드는

12-12 20:19:14.874: E/AndroidRuntime(9455): FATAL EXCEPTION: main
12-12 20:19:14.874: E/AndroidRuntime(9455): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.kmcpe.mcpelauncher/com.kmcpe.mcpelauncher.Loading}: java.lang.NullPointerException
12-12 20:19:14.874: E/AndroidRuntime(9455):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2034)
12-12 20:19:14.874: E/AndroidRuntime(9455):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
12-12 20:19:14.874: E/AndroidRuntime(9455):  at android.app.ActivityThread.access$700(ActivityThread.java:143)
12-12 20:19:14.874: E/AndroidRuntime(9455):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1241)
12-12 20:19:14.874: E/AndroidRuntime(9455):  at android.os.Handler.dispatchMessage(Handler.java:99)
12-12 20:19:14.874: E/AndroidRuntime(9455):  at android.os.Looper.loop(Looper.java:137)
12-12 20:19:14.874: E/AndroidRuntime(9455):  at android.app.ActivityThread.main(ActivityThread.java:4950)
12-12 20:19:14.874: E/AndroidRuntime(9455):  at java.lang.reflect.Method.invokeNative(Native Method)
12-12 20:19:14.874: E/AndroidRuntime(9455):  at java.lang.reflect.Method.invoke(Method.java:511)
12-12 20:19:14.874: E/AndroidRuntime(9455):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:997)
12-12 20:19:14.874: E/AndroidRuntime(9455):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:764)
12-12 20:19:14.874: E/AndroidRuntime(9455):  at dalvik.system.NativeStart.main(Native Method)
12-12 20:19:14.874: E/AndroidRuntime(9455): Caused by: java.lang.NullPointerException
12-12 20:19:14.874: E/AndroidRuntime(9455):  at android.content.ContextWrapper.getResources(ContextWrapper.java:81)
12-12 20:19:14.874: E/AndroidRuntime(9455):  at com.kmcpe.mcpelauncher.Loading.<init>(Loading.java:38)
12-12 20:19:14.874: E/AndroidRuntime(9455):  at java.lang.Class.newInstanceImpl(Native Method)
12-12 20:19:14.874: E/AndroidRuntime(9455):  at java.lang.Class.newInstance(Class.java:1319)
12-12 20:19:14.874: E/AndroidRuntime(9455):  at android.app.Instrumentation.newActivity(Instrumentation.java:1068)
12-12 20:19:14.874: E/AndroidRuntime(9455):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2025)
12-12 20:19:14.874: E/AndroidRuntime(9455):  ... 11 more
12-12 20:19:24.053: I/Process(9455): Sending signal. PID: 9455 SIG: 9

입니다.

 

위 오류코드가 지목하는 줄 소스는

String[] app_c = getResources().getStringArray(R.array.apps_c);

입니다.

무슨 문제라도 있는건가요?ㅠㅠ

부탁드립니다.

KMCPE (260 포인트) 님이 2013년 12월 12일 질문

2개의 답변

0 추천
getResources().getStringArray(R.array.apps_c);

이 코드는 onCreate 안이나 onCreate 가 호출된 다음에 사용해야 제대로 동작합니다.
익명사용자 님이 2013년 12월 12일 답변
감사합니다.
덕분에 오류가 해결이 됬네요.
0 추천

선언 부에서 쓰셨기 때문에 문제가 된 것으로 보입니다.

선언은 String[] app_c;

이렇게만 해두시고, onCreate() 에서

app_c = getResources().getStringArray(R.array.apps_c);

로 고쳐보시기 바랍니다.

adb (830 포인트) 님이 2013년 12월 12일 답변
정말 감사합니다.
이것때문에 계속 고생했는데 ㅠ
감사합니다~
저도 예전에 Context context = this; 하던게 생각나서
몇자 남겨봤습니다 ㅋ;;

좋은 작품 완성 하시길 바래요-
감사합니다 ㅎㅎ
혹시 레이아웃 배경만 투명도 설정 하는법 아시나요?
alpha를 xml에 넣어보았는데
안에 있는 위젯들까지 모두 흐려지더라구요,,;;
레이아웃 배경을 Drawable 로 받아와서
알파를 설정한 다음,
다시 레이아웃 배경을 해당 Drawable 로 설정하시면 됩니다.

Drawable d = layout.getBackground();
d.setAlpha(100);
layout.setBackgroundDrawable(d);
감사합니다~^^
정말 감사합니다
많이 알지는 못하지만 아는 선에서는 답변해드릴 수 있도록 할게요.

궁금하신 건 언제든지 말씀해주세요.
비슷한에러가 나는데 도움좀 주실수 있을까요...

buttonLoginFragment = (Button) findViewById(R.id.buttonLoginFragment);
        buttonLoginFragment.setOnClickListener(new View.OnClickListener() {

이부분에서 에러가 나는데 어떻게 해야할까요?
비슷한 에러 라고 하시면 원인이 뭔지 알 수 없습니다.
같은 에러라도 해결 방향은 무수하거든요.

해당 코드를 어느 위치에 쓰신건지,(주변 코드 까지)
정확하게 무슨 에러가 나는건지 정도는 알 수 있어야 답변이 가능합니다.
...