2011-09-30 4 views
0

5 초 후에 표시되는 스플래시 스크린을 빌드 한 후 내 주요 활동으로 이동합니다. 이 스플래시 화면에는 앱이 처음 열리는 지 확인하는 boolen이 있습니다. 그렇다면 데이터베이스에 항목이 저장됩니다. 하지만 정확히이 시점에서 NullPointerException이 발생합니다.스플래시 스크린의 Nullpointer 예외 드로어 블 액세스시

왜 작동하지 않는 지 알 수 없습니다. 내 눈에는 그것이 있어야한다. 또한 오류가없는 데모 응용 프로그램에서 코드를 테스트했기 때문에 실제로 이상합니다. 그래서 여기

내 SplashScreenActivity.java 아마

package de.retowaelchli.filterit; 


    import org.apache.http.util.ByteArrayBuffer; 
    import android.app.Activity; 
    import android.content.ContextWrapper; 
    import android.content.Intent; 
    import android.content.SharedPreferences; 
    import android.content.SharedPreferences.Editor; 
    import android.os.Bundle; 
    import android.preference.PreferenceManager; 
    import android.widget.ImageView; 

    import de.retowaelchli.filterit.database.DBAdapter; 
    import de.retowaelchli.filterit.database.SmileyDBAdapter; 

    public class SplashScreenActivity extends Activity { 

     //Variablen definieren 
     public static final String KEY_APP_IS_INITIALIZED = "APP_INITIALIZED"; 

     public SmileyDBAdapter mDbHelper; 
     private DBAdapter db; 

     ImageView iv; 
     ContextWrapper context; 
     ByteArrayBuffer baf; 

     /** Called when the activity is first created. */ 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.splash); 

      //Datenbank filling 
      db = new DBAdapter(this); 
      db.open(); 
      db.close(); 
      mDbHelper = new SmileyDBAdapter(this); 
      startupcheck(); 

      //Splash-Screen Animation 
      Thread splashThread = new Thread() { 

       @Override 
       public void run() { 
       try { 
        int waited = 0; 
        while (waited < 5000) { 
          sleep(100); 
          waited += 100; 
          } 
         } 
         catch (InterruptedException e) { 
          // do nothing 
         } 
        finally { 
         finish(); 
         Intent i = new Intent(); 
         i.setClassName("de.retowaelchli.filterit", 
            "de.retowaelchli.filterit.StartseiteActivity"); 
         startActivity(i); 
         } 
        } 
        }; 
        splashThread.start(); 
     } 

     //Hier wird getestet ob das App bereits die Datenbankeinträge besitzt 
     private void startupcheck(){ 
     SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(SplashScreenActivity.this); 
       boolean appIsInitialized = prefs.getBoolean(KEY_APP_IS_INITIALIZED, false); 
       if (appIsInitialized == false){ 

        //Hier werden die Smiley gefüllt 
        devil(); <--THIS IS GIVING ME A NULLPOINTEREXCEPTION 


        //Hier wird eingetragen das die Datenbank gefüllt wurde 
        Editor editor = prefs.edit(); 
        editor.putBoolean(KEY_APP_IS_INITIALIZED, true); 
        editor.commit();     
       } 

      } 

     /** Hier sind alle Datenbank Einträge definiert**/ 
     private void devil(){ 

      int drawableID = context.getResources().getIdentifier("devil", "drawable", getPackageName()); 
      iv.setImageResource(drawableID); 

      String info = String.valueOf(drawableID); 

      mDbHelper.open(); 

      mDbHelper.createSmiley("You received a satanic message", info); 

      mDbHelper.close(); 
     } 
} 

의 코드입니다 ....이로드되지 않도록 당김을 할 수있는 뭔가가하지만로드되지는 왜 안 이미지 수

사전에 도움을

09-30 10:44:04.808: INFO/ActivityManager(1760): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=de.retowaelchli.filterit/.SplashScreenActivity } from pid 3193 
09-30 10:44:04.838: VERBOSE/HtcAppUsageStats(1760): (launch app, package): (Filter It, de.retowaelchli.filterit) 
09-30 10:44:04.858: INFO/ActivityManager(1760): Start proc de.retowaelchli.filterit for activity de.retowaelchli.filterit/.SplashScreenActivity: pid=9074 uid=10150 gids={} 
09-30 10:44:04.868: INFO/SuperPowerSvc(16326): [SuperPowerSvc] App launched: [de.retowaelchli.filterit] 
09-30 10:44:04.918: ERROR/jdwp(9074): Failed sending reply to debugger: Broken pipe 
09-30 10:44:04.918: DEBUG/dalvikvm(9074): Debugger has detached; object registry had 1 entries 
09-30 10:44:05.038: VERBOSE/levels(6925): ::Bundle[{icon-small=17302166, present=true, scale=100, level=75, technology=Li-ion, status=3, voltage=3965, plugged=2, health=2, temperature=270}] 
09-30 10:44:05.548: DEBUG/Database(9074): dbopen(): path = /data/data/de.retowaelchli.filterit/databases/filterit, flag = 6 
09-30 10:44:05.548: DEBUG/Database(9074): dbopen(): path = /data/data/de.retowaelchli.filterit/databases/filterit, free size = 689 
09-30 10:44:05.578: DEBUG/AndroidRuntime(9074): Shutting down VM 
09-30 10:44:05.578: WARN/dalvikvm(9074): threadid=1: thread exiting with uncaught exception (group=0x4001d5a0) 
09-30 10:44:05.628: ERROR/AndroidRuntime(9074): FATAL EXCEPTION: main 
09-30 10:44:05.628: ERROR/AndroidRuntime(9074): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.retowaelchli.filterit/de.retowaelchli.filterit.SplashScreenActivity}: java.lang.NullPointerException 
09-30 10:44:05.628: ERROR/AndroidRuntime(9074):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1816) 
09-30 10:44:05.628: ERROR/AndroidRuntime(9074):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1837) 
09-30 10:44:05.628: ERROR/AndroidRuntime(9074):  at android.app.ActivityThread.access$1500(ActivityThread.java:132) 
09-30 10:44:05.628: ERROR/AndroidRuntime(9074):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1033) 
09-30 10:44:05.628: ERROR/AndroidRuntime(9074):  at android.os.Handler.dispatchMessage(Handler.java:99) 
09-30 10:44:05.628: ERROR/AndroidRuntime(9074):  at android.os.Looper.loop(Looper.java:143) 
09-30 10:44:05.628: ERROR/AndroidRuntime(9074):  at android.app.ActivityThread.main(ActivityThread.java:4196) 
09-30 10:44:05.628: ERROR/AndroidRuntime(9074):  at java.lang.reflect.Method.invokeNative(Native Method) 
09-30 10:44:05.628: ERROR/AndroidRuntime(9074):  at java.lang.reflect.Method.invoke(Method.java:507) 
09-30 10:44:05.628: ERROR/AndroidRuntime(9074):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
09-30 10:44:05.628: ERROR/AndroidRuntime(9074):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
09-30 10:44:05.628: ERROR/AndroidRuntime(9074):  at dalvik.system.NativeStart.main(Native Method) 
09-30 10:44:05.628: ERROR/AndroidRuntime(9074): Caused by: java.lang.NullPointerException 
09-30 10:44:05.628: ERROR/AndroidRuntime(9074):  at de.retowaelchli.filterit.SplashScreenActivity.devil(SplashScreenActivity.java:109) 
09-30 10:44:05.628: ERROR/AndroidRuntime(9074):  at de.retowaelchli.filterit.SplashScreenActivity.startupcheck(SplashScreenActivity.java:76) 
09-30 10:44:05.628: ERROR/AndroidRuntime(9074):  at de.retowaelchli.filterit.SplashScreenActivity.onCreate(SplashScreenActivity.java:40) 
09-30 10:44:05.628: ERROR/AndroidRuntime(9074):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093) 
09-30 10:44:05.628: ERROR/AndroidRuntime(9074):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1780) 
09-30 10:44:05.628: ERROR/AndroidRuntime(9074):  ... 11 more 
09-30 10:44:05.628: WARN/ActivityManager(1760): Force finishing activity de.retowaelchli.filterit/.SplashScreenActivity 
09-30 10:44:06.128: WARN/ActivityManager(1760): Activity pause timeout for HistoryRecord{40a95900 de.retowaelchli.filterit/.SplashScreenActivity} 
09-30 10:44:06.228: WARN/ResourceType(1760): Skipping entry 0x7f040005 in package table 0 because it is not complex! 

들으 :

그래서 여기 내 로그 캣입니다!

답변

3

어디서나 볼 수있는 것은 onCreate()에서 ImageView iv를 초기화하는 것입니다.

+0

null.setImageResource(drawableID);처럼 whic iv.setImageResource(drawableID);을 말했기 때문에! – safari

+1

바보 같은 질문을 한 번도하지 않습니다. 당신은 그 중 하나가 아닙니다. :) –

1
ImageView iv; 

당신이 초기화 did't 내가 stupided에있어, 그것에 대해 들으을 잊어