2012-09-20 111 views
-3

下面的代碼是做錯了什麼?顯示不同的屏幕第一次運行應用程序

SharedPreferences mPreferences; 

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

    setContentView(R.layout.splash); 
     new Handler().postDelayed(new Runnable() { 

      public void run() { 
       init(); 
       callFunc(); 
      } 

     }, SPLASH_DISPLAY_LENGHT); 
     // } 
    } 

    boolean firstTime() { 
     boolean firstTime = mPreferences.getBoolean("firstTime", true); 
     if (firstTime) { 
      SharedPreferences.Editor editor = mPreferences.edit(); 
      editor.putBoolean("firstTime", false); 
      editor.commit(); 
      return true; 
     } else { 
      return false; 
     } 
    } 

    void callFunc(){ 
     if(firstTime()){ 
      callDetailedScreen();   
     } 
     else{ 
      CallMainScreen(); 
     } 
    } 

logcat的

09-21 03:28:58.948: E/AndroidRuntime(314): FATAL EXCEPTION: main 
09-21 03:28:58.948: E/AndroidRuntime(314): java.lang.NullPointerException 
09-21 03:28:58.948: E/AndroidRuntime(314): at com.x.y.Main.firstTime(Main.java:38) 
09-21 03:28:58.948: E/AndroidRuntime(314): at com.x.y.callFunc(Main.java:50) 
09-21 03:28:58.948: E/AndroidRuntime(314): at com.x.y.Main$2.run(Main.java:30) 
09-21 03:28:58.948: E/AndroidRuntime(314): at android.os.Handler.handleCallback(Handler.java:587) 
09-21 03:28:58.948: E/AndroidRuntime(314): at android.os.Handler.dispatchMessage(Handler.java:92) 
09-21 03:28:58.948: E/AndroidRuntime(314): at android.os.Looper.loop(Looper.java:123) 
09-21 03:28:58.948: E/AndroidRuntime(314): at android.app.ActivityThread.main(ActivityThread.java:4627) 
09-21 03:28:58.948: E/AndroidRuntime(314): at java.lang.reflect.Method.invokeNative(Native Method) 
09-21 03:28:58.948: E/AndroidRuntime(314): at java.lang.reflect.Method.invoke(Method.java:521) 
09-21 03:28:58.948: E/AndroidRuntime(314): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
09-21 03:28:58.948: E/AndroidRuntime(314): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
09-21 03:28:58.948: E/AndroidRuntime(314): at dalvik.system.NativeStart.main(Native Method) 
+0

爲什麼使用延遲處理程序發佈此啓動畫面? – AedonEtLIRA

+0

所以這段代碼是閃屏? – AedonEtLIRA

+0

不......你會得到異常嗎? – AedonEtLIRA

回答

2

根據您發佈的代碼和你的logcat,你是不是你的實例SharedPreferences。

1

你需要加載你的喜好,這樣的事情應該這樣做。把它放在創造。

mPreferences = android.preference.PreferenceManager 
      .getDefaultSharedPreferences(this); 
相關問題