当前位置: 首页 > 面试题库 >

解析错误:必须在`Parse#initialize(Context)`之前调用Parse#enableLocalDatastore(Context)。

艾晋
2023-03-14
问题内容

因此,我遵循了Parse
SDK网站的《快速入门指南》中的说明。该应用程序第一次运行良好。但是,当我最小化该应用程序并从任务切换器再次运行它时,它会强制关闭。

该错误对我来说没有任何意义。Logcat-

05-09 08:57:40.611  19419-19419/com.example.shubhamkanodia.bookmybook E/CrashReporting﹕ ParseCrashReporting caught a RuntimeException exception for com.example.shubhamkanodia.bookmybook. Building report.
05-09 08:57:40.626  19419-19419/com.example.shubhamkanodia.bookmybook E/CrashReporting﹕ Handling exception for crash
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.shubhamkanodia.bookmybook/com.example.shubhamkanodia.bookmybook.MainActivity}: java.lang.IllegalStateException: `Parse#enableLocalDatastore(Context)` must be invoked before `Parse#initialize(Context)`
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
            at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3947)
            at android.app.ActivityThread.access$900(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1309)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5254)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
     Caused by: java.lang.IllegalStateException: `Parse#enableLocalDatastore(Context)` must be invoked before `Parse#initialize(Context)`
            at com.parse.Parse.enableLocalDatastore(Parse.java:104)
            at com.example.shubhamkanodia.bookmybook.MainActivity.onCreate(MainActivity.java:21)
            at android.app.Activity.performCreate(Activity.java:5990)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
            at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3947)
            at android.app.ActivityThread.access$900(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1309)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5254)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

Mainactivity.java

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if(!ParseCrashReporting.isCrashReportingEnabled())
            ParseCrashReporting.enable(this);

        Parse.enableLocalDatastore(this); //Its already before initialize
        Parse.initialize(this, "XXX", "XXX");
        ParseInstallation.getCurrentInstallation().saveInBackground();
        ParseAnalytics.trackAppOpenedInBackground(getIntent());
    }

问题答案:

您可以有一个单独的类来执行初始化工作。因此,创建一个ParseApplication可扩展的类Application

public class ParseApplication extends Application {

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

        ParseCrashReporting.enable(this);
        Parse.enableLocalDatastore(this);
        Parse.initialize(this, "xxx", "xxx");
    }
  }

然后在AndroidManifest.xml中,将ParseApplication类添加到Application

 <application
        android:name="com.example.parsetry.ParseApplication" // you should replace this based on your package
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>


 类似资料:
  • Parse 富文本解析器 1.5.3 相同点: 二者都能解析HTML字符串 不同点: 对于轻量、简单的字符串,rich-text性能更好 对于复杂的字符串,使用parse组件效果更好,有更多的自定义属性和效果 总结:如果是简单的场景,比如一段简单的文字和图片内容,可以优先使用rich-text组件,在文章内容,商品详情等复杂的文本详情,可以优先使用parse组件。 提示 此组件源于开源的优秀作品P

  • parse() 方法 解析一个日期时间字符串,并返回 1970/1/1 午夜距离该日期时间的毫秒数。 语法: Date.parse( dateString ) 参数说明: dateString -- 表示日期和时间的字符串 返回值: 指定的日期和时间据 1970/1/1 午夜( GMT 时间 )之间的毫秒数。 说明: Date.parse() 是 Date 对象的静态方法。 一般采用 Dat

  • 描述 (Description) 它通过传递响应对象返回集合的数据,并以JSON格式表示数据。 语法 (Syntax) collection.parse(response, options) 参数 (Parameters) response - 它将模型属性数组返回到集合。 options - 它包含true作为表示JSON格式数据的选项。 例子 (Example) <!DOCTYPE html

  • 描述 (Description) 它由服务器使用,并通过传递响应对象返回模型的数据,并以JSON格式表示数据。 语法 (Syntax) model.parse(response,options) 参数 (Parameters) response - 使用响应原始对象传递,并返回要在模型上设置的属性。 options - 它包含true作为表示JSON格式数据的选项。 例子 (Example) <

  • import "text/template/parse" Package parse builds parse trees for templates as defined by text/template and html/template. Clients should use those packages to construct templates rather than this one

  • 使用DOM4J的步骤 以下是使用DOM4J Parser解析文档时使用的步骤。 导入与XML相关的包。 创建一个SAXReader。 从文件或流创建文档。 通过调用document.selectNodes()获取使用XPath Expression获取所需的节点 提取根元素。 迭代节点列表。 检查属性。 检查子元素。 Import XML-related packages import java.