2015-07-12 34 views
2

我是Parse.com的新手,目前正在使用Android中的Parse构建我的第一个项目。我正在尝试复制'Anywall'教程(https://www.parse.com/tutorials/anywall-android)中显示的登录工作流程,但我完全没有得到它的工作。NullPointerException当检查(ParseUser.getCurrentUser()!= null)

每当我试着启动应用程序,它让我在哪里,我想检查在DispatchActivity(ParseUser.getCurrentUser()!= NULL)(代码如下所示)一个NullPointerException:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     // Check if there is current user info 
     if (ParseUser.getCurrentUser() != null) { 
      // Start an intent for the logged in activity 
      startActivity(new Intent(this, MainActivity.class)); 
     } else { 
      // Start and intent for the logged out activity 
      startActivity(new Intent(this, WelcomeActivity.class)); 
     } 

    } 

在logcat中的堆栈跟踪是为下:

07-13 00:34:54.925 6268-6268/com.appzylabs.pratik.groupreceipts W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0xa6142908) 
07-13 00:34:54.925 6268-6268/com.appzylabs.pratik.groupreceipts E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.appzylabs.pratik.groupreceipts/com.appzylabs.pratik.groupreceipts.DispatchActivity}: java.lang.NullPointerException 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
      at android.app.ActivityThread.access$600(ActivityThread.java:141) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
      at android.os.Handler.dispatchMessage(Handler.java:99) 
      at android.os.Looper.loop(Looper.java:137) 
      at android.app.ActivityThread.main(ActivityThread.java:5041) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:511) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
      at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.NullPointerException 
      at com.parse.Parse.getParseDir(Parse.java:304) 
      at com.parse.ParseObject.getFromDisk(ParseObject.java:667) 
      at com.parse.ParseUser$10.then(ParseUser.java:1056) 
      at com.parse.ParseUser$10.then(ParseUser.java:1003) 
      at bolts.Task$14.run(Task.java:796) 
      at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) 
      at bolts.Task.completeAfterTask(Task.java:787) 
      at bolts.Task.continueWithTask(Task.java:599) 
      at bolts.Task.continueWithTask(Task.java:610) 
      at com.parse.ParseUser.getCurrentUserAsync(ParseUser.java:1003) 
      at com.parse.ParseUser.access$800(ParseUser.java:26) 
      at com.parse.ParseUser$9.then(ParseUser.java:996) 
      at com.parse.ParseUser$9.then(ParseUser.java:993) 
      at com.parse.TaskQueue.enqueue(TaskQueue.java:61) 
      at com.parse.ParseUser.getCurrentUserAsync(ParseUser.java:993) 
      at com.parse.ParseUser.getCurrentUser(ParseUser.java:979) 
      at com.parse.ParseUser.getCurrentUser(ParseUser.java:966) 
      at com.appzylabs.pratik.groupreceipts.DispatchActivity.onCreate(DispatchActivity.java:26) 
      at android.app.Activity.performCreate(Activity.java:5104) 
      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
            at android.app.ActivityThread.access$600(ActivityThread.java:141) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
            at android.os.Handler.dispatchMessage(Handler.java:99) 
            at android.os.Looper.loop(Looper.java:137) 
            at android.app.ActivityThread.main(ActivityThread.java:5041) 
            at java.lang.reflect.Method.invokeNative(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:511) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
            at dalvik.system.NativeStart.main(Native Method) 

有个声音告诉我,“ParseUser”是没有得到初始化或正常实例化,但我已经在我的应用程序类下面的代码:

public Application() { 
    } 

    @Override 
    public void onCreate() { 
     super.onCreate(); 

     Parse.enableLocalDatastore(this); 
     Parse.initialize(this, "XXXX", "YYYY"); 

    } 
} 

我在这里做错了什么?我无法弄清楚。任何帮助?

+1

您的ParseUser登录了吗? – kRiZ

+0

谢谢,但这是我的一个愚蠢的错误。如下所示。 –

回答

0

你需要或者创建新的ParseUser对象并调用方法ParseUser.signUp()或与一些凭据创建新ParseUser并调用ParseUser.logIn()能够使用ParseUser.getCurrentUser()只要

这检索当前登录的ParseUser与一个有效的会话,无论是从内存还是磁盘(如有必要)

+0

谢谢,但这是我的一个愚蠢的错误。如下所示。 –

2

嗯,我刚刚意识到了这个问题。我是在一个单独的应用程序调用类Parse.initialize()像这样:

public class Application extends android.app.Application { 
... 
Parse.initialize(this, "XXXX", "YYYY"); 
... 
} 

然而,让从未得到执行的代码我没有添加类我AndroidManifest.xml中,解析从来没有得到初始化,并且ParseUser正在抛出一个NullPointerException。一旦我添加到我的清单像下,它的工作:

<application 
     android:name="com.appzylabs.pratik.groupreceipts.Application" 

对不起!我希望这对面临同样问题的其他人有用。