I'm creating an app that will use Hashtag. Now so far I'm using AutoLinkTextClick! and everything works fine except when someone clicks on the identified hashtag the app crash with an error:
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
So I have read almost all over StackOverflow about what might be causing it and people suggest to use getContext()
or getActvity()
but neither of this works because I'm trying to launch that intent from an adapter and not from a class that extends activity or from a fragment, so I would very well appreciate for your help guys.
Thank you very much for your time and assistance in this matter. Below is my code for the adapter and error that is being displayed :)
package com.android.msahakyan.expandablenavigationdrawer.adapter;
import android.app.Activity;
import android.content.DialogInterface;
import android.content.Intent;
import android.support.v4.app.FragmentManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.support.v7.app.AlertDialog;
import com.android.msahakyan.expandablenavigationdrawer.AboutUsActivity;
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.NetworkImageView;
import com.android.msahakyan.expandablenavigationdrawer.R;
import com.android.msahakyan.expandablenavigationdrawer.activity.FeedImageView;
import com.android.msahakyan.expandablenavigationdrawer.model.Feed;
import com.android.msahakyan.expandablenavigationdrawer.others.AppController;
import com.luseen.autolinklibrary.AutoLinkMode;
import com.luseen.autolinklibrary.AutoLinkOnClickListener;
import com.luseen.autolinklibrary.AutoLinkTextView;
import java.util.List;
public class FeedsListAdapter extends RecyclerView.Adapter<FeedsListAdapter.MyHolder> {
private Activity activity;
private LayoutInflater inflater;
private List<Feed> feedItems;
ImageLoader imageLoader = AppController.getInstance().getImageLoader();
//ImageLoader imageLoader = VolleySingleton.getInstance(context).getImageLoader()
public FragmentManager f_manager;
public FeedsListAdapter(Activity activity, List<Feed> feedItems) {
this.activity = activity;
this.feedItems = feedItems;
}
//INITIALIE VH
//@Override
public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v= LayoutInflater.from(parent.getContext()).inflate(R.layout.feeds_home_row,parent,false);
MyHolder holder=new MyHolder(v);
return holder;
}
//BIND DATA
// @Override
public void onBindViewHolder(MyHolder holder, int position) {
//ImageLoader imageLoader = AppController.getInstance().getImageLoader();
if (imageLoader == null)
imageLoader = AppController.getInstance().getImageLoader();
final Feed f = feedItems.get(position);
//Post images
holder.picture.setImageUrl(f.getPictureUrl(), imageLoader); // displays company profile image on post
holder.sms_image.setImageUrl(f.getMessagePictureUrl(), imageLoader); // displays post image on post
//autoLinkTextView.enableUnderLine();
holder.messages.addAutoLinkMode(AutoLinkMode.MODE_HASHTAG);
holder.messages.setAutoLinkText("this the sample message #test i need to test hashtag onClink and launch intent"); //
holder.messages.setAutoLinkOnClickListener(new AutoLinkOnClickListener() {
@Override
public void onAutoLinkTextClick(AutoLinkMode autoLinkMode, String matchedText) {
Intent intent = new Intent(activity, AboutUsActivity.class);
intent.putExtra("companyId", f.getCompanyId());
activity.startActivity(intent);
}
});
//holder.messages.setText(f.getMessage());
//Linkify.addLinks(holder.messages, Linkify.ALL); //detect link that are in a message
holder.date_created.setText(f.getDateCreated());
holder.company.setText(f.getCompany());
}
/*
TOTAL ITEMS
*/
//@Override
public int getItemCount() {
return feedItems.size();
}
/*
ADD DATA TO ADAPTER
*/
public void add(Feed s) {
feedItems.add(s);
notifyDataSetChanged();
}
/*
CLEAR DATA FROM ADAPTER
*/
public void clear() {
feedItems.clear();
notifyDataSetChanged();
}
/*
VIEW HOLDER CLASS
*/
class MyHolder extends RecyclerView.ViewHolder {
FeedImageView sms_image;
NetworkImageView picture;
//TextView messages;
AutoLinkTextView messages;
//AutoLinkTextView autoLinkTextView;
TextView date_created;
TextView company;
public MyHolder(View convertView) {
super(convertView);
this.sms_image = (FeedImageView) convertView.findViewById(R.id.sms_image);
NetworkImageView thumbnail = (NetworkImageView) convertView.findViewById(R.id.thumbnail);
this.picture = (NetworkImageView) convertView.findViewById(R.id.picture);
//this.messages = (TextView) convertView.findViewById(R.id.messages);
this.messages = (AutoLinkTextView) convertView.findViewById(R.id.messages);
this.date_created = (TextView) convertView.findViewById(R.id.date_created);
this.company = (TextView) convertView.findViewById(R.id.company);
//TextView status = (TextView) convertView.findViewById(R.id.status);
}
}
}
The error that is being displayed is
10-10 08:08:06.128 28368-28368/com.android.msahakyan.expandablenavigationdrawer E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.android.msahakyan.expandablenavigationdrawer, PID: 28368
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:4666)
at com.android.msahakyan.expandablenavigationdrawer.adapter.FeedsListAdapter$1.onAutoLinkTextClick(FeedsListAdapter.java:87)
at com.luseen.autolinklibrary.AutoLinkTextView$1.onClick(AutoLinkTextView.java:77)
at android.text.method.LinkMovementMethod.onTouchEvent(LinkMovementMethod.java:217)
at com.luseen.autolinklibrary.LinkTouchMovementMethod.onTouchEvent(LinkTouchMovementMethod.java:38)
at android.widget.TextView.onTouchEvent(TextView.java:8689)
at android.view.View.dispatchTouchEvent(View.java:9787)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2686)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2335)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2686)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2335)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2686)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2335)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2686)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2335)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2686)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2335)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2686)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2335)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2686)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2335)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2686)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2335)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2686)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2335)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2686)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2335)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2686)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2335)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2686)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2335)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2686)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2335)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2686)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2335)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2686)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2335)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2686)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2335)
at com.android.internal.policy.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2461)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1780)
at android.app.Activity.dispatchTouchEvent(Activity.java:2853)
at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:68)
at com.android.internal.policy.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2422)
at android.view.View.dispatchPointerEvent(View.java:10018)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4738)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4596)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4101)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4154)
at android.view