2012-09-20 112 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); 
相关问题