Android: Null Pointer exception when calling a new intent

I get an error when trying to invoke a new action using an intent:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.ActivityThread$ApplicationThread android.app.ActivityThread.getApplicationThread()' on a null object reference 

My activity has a button, and when clicked, it goes to this method:

 public void onClickChangeActivity() { Intent intent = new Intent(context , Details.class); startActivity(intent); } 

public static A context context is created at the beginning of the class and then created in my onCreate as context = getApplicationContext ();

I also tried context = getBaseContext () and context = RecyclerViewActivity.this (RecyclerViewActivity is the name of my current class)

Any help regarding why I get this NullP? I tried all the StackOverFlow answers related to it. In addition, my manifesto includes my activities.

onClickChangeActivity is called from the RecyclerViewerAdapter class:

 View.OnClickListener getPersonClickListener(final int position) { return new View.OnClickListener() { @Override public void onClick(View view) { RecyclerViewActivity recyclerViewActivity = new RecyclerViewActivity(); recyclerViewActivity.onClickChangeActivity(); } }; 

Manifest file:

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.test.akash.android_test" > <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="21" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="18" /> <application 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" android:screenOrientation="portrait" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <!-- <activity --> <!-- android:name=".DataFetcher" --> <!-- android:label="@string/title_activity_data_fetcher" > --> <!-- </activity> --> <activity android:name=".Crime" android:label="@string/title_activity_crime" android:screenOrientation="portrait" > </activity> <activity android:name=".RecyclerViewActivity" android:label="@string/title_activity_recycler_view" android:screenOrientation="portrait" > </activity> <activity android:name=".Details" android:label="@string/title_activity_crime_details" android:parentActivityName=".RecyclerViewActivity" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="RecyclerViewActivity" /> </activity> </application> </manifest> 

LogCat:

  java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference at android.content.ContextWrapper.getPackageName(ContextWrapper.java:132) at android.content.ComponentName.<init>(ComponentName.java:77) at android.content.Intent.<init>(Intent.java:4160) at com.bah.baltimoreopendata.android_baltimoreopendata.RecyclerViewActivity.onClickChangeActivity(RecyclerViewActivity.java:265) at com.bah.baltimoreopendata.android_baltimoreopendata.RecycleViewAdapter$1.onClick(RecycleViewAdapter.java:121) at android.view.View.performClick(View.java:4780) at android.view.View$PerformClick.run(View.java:19866) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) 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) 
+5
source share
4 answers

The problem is that you are trying to call the activity method from the adapter :

 RecyclerViewActivity recyclerViewActivity = new RecyclerViewActivity(); recyclerViewActivity.onClickChangeActivity(); 

You must replace this code in the adapter class. In the adapter constructor add the following lines:

 public RecycleViewAdapter(......, Context context){ ...your code. this.mContext=context; } 

And in the getPersonClickListener interface:

 View.OnClickListener getPersonClickListener(final int position) { return new View.OnClickListener() { @Override public void onClick(View view) { if(mContext instanceof RecyclerViewActivity){ ((RecyclerViewActivity)mContext).onClickChangeActivity(); } } }; 

And when you call the onClickChangeActivity method in RecyclerViewActivity, use:

 public void onClickChangeActivity() { Intent intent = new Intent(RecyclerViewActivity.this, Details.class); startActivity(intent); } 

And make sure Details.class extends the action.

+6
source

try the following:

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

use RecyclerViewActivity.this instead of context

+3
source

Decision:

In the adapter class, create a private static Context context;

In your inCreateViewHolder (), create a context to view Group.getContext ():

 @Override public PersonViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item, viewGroup, false); PersonViewHolder pvh = new PersonViewHolder(v); context = viewGroup.getContext(); return pvh; } 

It is for this reason that I am getting a Null Pointer exception. For some reason, the fact that I am creating a constructor with a context, the context was still null. Concretizing the context in the above class did the trick! Thanks to all who responded.

+2
source

Are you trying to run Details.class -

But I cannot find links to this activity in your manifest.

Please add

 <activity android:name=".Details"</activity> 

In your manifest and make sure the details expand the activity.

+1
source

All Articles