-1

Hi currently i am working on project including parse server,and after adding parse library to my project ,when i run it it shows this error ( java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myapplicationv/com.example.myapplicationv.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.File com.parse.ParsePlugins.getParseDir()' on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.File com.parse.ParsePlugins.getParseDir()' on a null object reference at com.parse.Parse.getParseDir(Parse.java:509) at com.parse.ParseCorePlugins.getCurrentUserController(ParseCorePlugins.java:130) at com.parse.ParseUser.getCurrentUserController(ParseUser.java:55) at com.parse.ParseUser.getCurrentUserAsync(ParseUser.java:883) at com.parse.ParseObject.saveInBackground(ParseObject.java:1405) at com.parse.ParseObject.saveInBackground(ParseObject.java:1529) at com.example.myapplicationv.MainActivity.onCreate(MainActivity.java:22) at android.app.Activity.performCreate(Activity.java:6662) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)  at android.app.ActivityThread.-wrap12(ActivityThread.java)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:154)  at android.app.ActivityThread.main(ActivityThread.java:6077)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)  )

this is MainActivity here

MainActivity

   package com.example.myapplicationv;

import android.os.Bundle;
import android.util.Log;

import androidx.appcompat.app.AppCompatActivity;

import com.parse.ParseAnalytics;
import com.parse.ParseException;
import com.parse.ParseObject;
import com.parse.SaveCallback;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ParseObject score = new ParseObject("Score");
        score.put("username","Nalin");
        score.put("score",200);
        score.saveInBackground(new SaveCallback() {
            @Override
            public void done(ParseException e) {
                if (e == null){
                    Log.i("success","we save the score");
                }else{
                    e.printStackTrace();
                }
            }
        });
        ParseAnalytics.trackAppOpenedInBackground(getIntent());

    }
}

StarterApplication

  package com.example.myapplicationv;

import android.os.Bundle;

import androidx.appcompat.app.AppCompatActivity;

import com.parse.Parse;
import com.parse.ParseACL;
import com.parse.ParseUser;

public class StarterApplication extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_starter_application);
        Parse.enableLocalDatastore(this);
        Parse.initialize(new Parse.Configuration.Builder(getApplicationContext())
                .applicationId("myappID")
                .clientKey("nV48GY6ZE5Lw")
                .server("http://18.217.199.68/parse/")
                .build()
        );



        ParseUser.enableAutomaticUser();

        ParseACL defaultACL = new ParseACL();
        defaultACL.setPublicReadAccess(true);
        defaultACL.setPublicWriteAccess(true);
        ParseACL.setDefaultACL(defaultACL, true);
    }
}
Manuel
  • 14,274
  • 6
  • 57
  • 130

1 Answers1

0

You need to initialize the parser in the application class as explained in document here. Also should declare it in the Manifest file.

The problem that I encounter was that the Document that shows to Use a class App extending Application was never initialized even after adding the activity in Manifest(it gives a red line also). So what I did was I saved the below code in the onCreate of my SplashActivity

Parse.initialize(new Parse.Configuration.Builder(this)
                    .applicationId(getString(R.string.back4app_app_id))
                    // if defined
                    .clientKey(getString(R.string.back4app_client_key))
                    .server(getString(R.string.back4app_server_url))
                    .enableLocalDataStore() // <--- This is important
                    .build());

Now After this I'm able to use it normally.

Thirumalai
  • 176
  • 9