代码之家  ›  专栏  ›  技术社区  ›  Baz M

在没有当前用户的情况下解析查询

  •  0
  • Baz M  · 技术社区  · 7 年前

    我有一个在安卓和IOS上运行的应用程序。

    两者的第一个活动是登录屏幕。 第二个活动是一个搜索功能,允许您使用parse查找附近的用户。

    然而,我正在尝试让应用程序允许用户无需登录即可进行搜索。

    这在IOS上很容易做到。

    在android中,我将清单文件中的启动活动更改为活动2(搜索活动),它可以正常加载,但显然没有当前用户。

    当我现在尝试运行查询时,应用程序只是暂停,在调试器中它说用户为null。我猜这就是问题所在。

    然后我尝试使用这些行在oncreate方法中创建一个匿名用户。。

      ParseAnonymousUtils.logIn(new LogInCallback() {
            @Override
            public void done(ParseUser user, ParseException e) {
                if (e != null) {
                    Log.d("MyApp", "Anonymous login failed.");
                } else {
                    Log.d("MyApp", "Anonymous user logged in.");
                }
            }
        });
    

    然后,此操作失败,并显示消息

    Java语言lang.NullPointerException:尝试调用虚拟方法的java。io。文件com。作语法分析解析插件。getParseDir(),位于com的空对象引用上。作语法分析作语法分析getParseDir(Parse.java:499)

    但奇怪的是。如果我把这段代码放在活动1中,它确实可以工作,但当应用程序尝试启动活动2时,它就会被卡住。

    有人知道发生了什么吗?或者我如何解决我原来的问题?

    谢谢

    1 回复  |  直到 7 年前
        1
  •  0
  •   Dmitri Borohhov    7 年前

    未初始化解析时会出现此错误。我猜你把你的 Parse.initialize() 活动中的代码。当您转到另一个时,初始化将丢失。你需要扩展你的应用程序类,这样它就可以为整个应用程序进行一次初始化。

    public class Application extends android.app.Application {
    
        @Override
        public void onCreate() {
            super.onCreate();
            Parse.initialize(new Parse.Configuration.Builder(this)
                    .applicationId("id")
                    .clientKey("key")
                    .server("server")
                    .enableLocalDataStore()
                    .build()
            );
            ParseUser.enableAutomaticUser();
       }
    }
    

    这在你的AndroidManifest中。xml

    <application
            android:name=".Application"
            android:allowBackup="true"
            android:icon="@drawable/logo"
            android:label="@string/app_name"
            android:theme="@style/AppTheme">