Android 第一次运行应用程序时显示不同的屏幕

Android 第一次运行应用程序时显示不同的屏幕,android,multithreading,sharedpreferences,Android,Multithreading,Sharedpreferences,我在以下代码中做错了什么 SharedPreferences mPreferences; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.splash);

我在以下代码中做错了什么

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)

根据您发布的代码和日志,您没有实例化您的SharedReferences。

您需要加载您的首选项,类似这样的操作就可以了。把它放在onCreate中

mPreferences = android.preference.PreferenceManager
            .getDefaultSharedPreferences(this);

为什么要使用延迟处理程序发布此初始屏幕?那么此代码就是初始屏幕?不。。。你有例外吗?