Ne0
Ne0

Reputation: 41

app crash with android.content.Context.getPackageName()' on a null object reference

i need help. I'm in the finish phase of development of my android application and now after a few month of develop the app magically crash with this error :

java.lang.String android.content.Context.getPackageName()' on a null object reference

I don't know what is the problem but i will post the code that cause the crash :

   public static void start(Context context) {
        context.startActivity(new Intent(context, ConversationsActivity.class));
    }

called with this piece of code (inside a fragment):

ConversationsActivity.start(getActivity());

The last change that i've make was to add Fabric.io ( in particular Branch ) and from the history in the last commit on git i don't show nothing that can produce this error

EDIT :

 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
at android.content.ComponentName.<init>(ComponentName.java:128) 
at android.content.Intent.<init>(Intent.java:4900)
at com.exampleapp.views.messages.ConversationsActivity.start(ConversationsActivity.java:31)
at com.exampleapp.views.menu.MenuFragment.onMenuMessagesClicked(MenuFragment.java:116)
at com.exampleapp.views.menu.MenuFragment_ViewBinding$5.doClick(MenuFragment_ViewBinding.java:82)
at butterknife.internal.DebouncingOnClickListener.onClick(DebouncingOnClickListener.java:22)
at android.view.View.performClick(View.java:5637)
at android.view.View$PerformClick.run(View.java:22429)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

Upvotes: 3

Views: 14639

Answers (3)

Appafly
Appafly

Reputation: 666

Your problem is that you are using the intent wrong. Replace your start() code with this:

public static void start() {
    Intent i = new Intent(getApplicationContext(), ConversationsActivity.class);
    startActivity(i);
}

Then instead of using ConversationsActivity.start(getActivity()); to call it, just use start(); when you want to call the method.

Hope this helps!

Upvotes: 1

Ferdous Ahamed
Ferdous Ahamed

Reputation: 21736

You should use getActivity() to launch an Activity from Fragment.

From a Fragment: Context is parent activity (getActivity()).

Intent intent = new Intent(getActivity(), ConversationsActivity.class);
startActivity(intent);

From an Activity: Context is current activity (this).

Intent intent = new Intent(this, ConversationsActivity.class);
startActivity(intent);

Upvotes: 3

Chester Cobus
Chester Cobus

Reputation: 701

Or you could do this:

public static void start(Activity activity) {
    activity.startActivity(new Intent(activity, ConversationsActivity.class));
}

Upvotes: 3

Related Questions