我正在創建將使用Hashtag的應用程序。現在到目前爲止,我正在使用AutoLinkTextClick!和一切正常,當有人在確定主題標籤點擊應用程序崩潰與錯誤,除了罰款:從助手類(適配器)啓動Intent返回java.lang.NullPointerException:
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
所以我對什麼可能導致它與人建議使用getContext()
或getActvity()
但既不能讀上幾乎所有的StackOverflow這是有效的,因爲我試圖從適配器啓動這個意圖,而不是從一個擴展活動或從一個片段的類,所以我非常感謝你的幫助。
非常感謝您在這件事上的時間和協助。下面是我的適配器和錯誤代碼正在顯示:)
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);
}
}
}
錯誤正在顯示的
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
你是如何在活動中加入列表和活動PARAMS?你能向我們展示你的活動嗎? –
地方添加代碼如何傳遞活動引用到適配器 –