NullPointerException,没有什么是空的

NullPointerException,nothing is null

我正在尝试从 Activity A 向 Activity B 发送一些数据。 Ytadapter代码:

    @Override
public View getView(final int position, View convertView, final ViewGroup parent) {
    final ViewHolder mHolder;
    if(convertView != null){
        mHolder = (ViewHolder)convertView.getTag();
    }else{
        mHolder = new ViewHolder();
        convertView = mLayoutInflater.inflate(R.layout.view_video_item,null);
        mHolder.mVideoThumbnail = (ImageView)convertView.findViewById(R.id.video_thumbnail);
        mHolder.mVideoTitle = (TextView)convertView.findViewById(R.id.video_title);
        mHolder.mVideoFavorite = (ImageView)convertView.findViewById(R.id.video_favorite);

        convertView.setTag(mHolder);
    }
    //Setting the data
    final SearchResult result = mVideoList.get(position);
    mHolder.mVideoTitle.setText(result.getSnippet().getTitle());

    //Loading the image
    Picasso.with(mActivity).load(result.getSnippet().getThumbnails().getMedium().getUrl()).into(mHolder.mVideoThumbnail);

    //OnClickListeners
    mHolder.mVideoFavorite.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            AppUtils.showToast(result.getSnippet().getTitle() + " Was added to favorites.");
            m.sendResult = result;
            m.sendToFavorites();
        }
    });

正在 YtAdapter 中初始化:

    private Activity mActivity = null;
private List<SearchResult> mVideoList = null;
private LayoutInflater mLayoutInflater = null;
MainActivity m = new MainActivity();

这是A的代码:

public void sendToFavorites(){
        Intent fav = new Intent(MainActivity.this,Favorites.class);
        fav.putExtra("title",sendResult.getSnippet().getTitle());
        fav.putExtra("thumbnail",sendResult.getSnippet().getThumbnails().getMedium().getUrl());
        fav.putExtra("id", sendResult.getId().getVideoId());
}

这是我遇到的问题:

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference

根据IDE,问题出在MainActivity行 意图 fav = new ...

你永远不应该新建一个 extends Activity 的 class,使用 Android 框架给你的实例。

new Intent(MainActivity.this > MainActivity.thisnull (它提供的上下文)在代码的这个地方。

查看 new Intent(Context 的源代码,您会看到它的作用 context.getPackageName

https://github.com/android/platform_frameworks_base/blob/master/core/java/android/content/Intent.java#L4160 造成: https://github.com/android/platform_frameworks_base/blob/master/core/java/android/content/ComponentName.java#L64

要解决此问题,您需要使用正确的上下文 (Activity)

将您的方法调用更改为

m.sendToFavorites(mActivity);

以及您

的方法

public void sendToFavorites(Context context){ Intent fav = new Intent(context,Favorites.class);