尝试在空对象引用上调用虚拟方法'int java.lang.String.length()' [英] Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference

查看:154
本文介绍了尝试在空对象引用上调用虚拟方法'int java.lang.String.length()'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我有带Tabs和RecyclerView的Android应用.当我运行我的应用程序时,它崩溃了.

So I have Android app with Tabs and RecyclerView. When I run my app, it crashes.

logcat:

java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
        at java.io.StringReader.<init>(StringReader.java:47)
        at android.text.HtmlToSpannedConverter.convert(Html.java:442)
        at android.text.Html.fromHtml(Html.java:136)
        at android.text.Html.fromHtml(Html.java:99)
        at com.example.app.MyRecyclerViewAdapter2.onBindViewHolder(MyRecyclerViewAdapter2.java:80)
        at com.example.app.MyRecyclerViewAdapter2.onBindViewHolder(MyRecyclerViewAdapter2.java:17)
       ...

在com.example.app.MyRecyclerViewAdapter2.onBindViewHolder(MyRecyclerViewAdapter2.java:80)

at com.example.app.MyRecyclerViewAdapter2.onBindViewHolder(MyRecyclerViewAdapter2.java:80)

它指向代码的这一行

listRowViewHolder.postId.setText(Html.fromHtml(listItems.getPostId())); // This line of code leads to crashing of app

如果我删除此行,我的应用程序将正常运行.

If I delete this line, my app will work fine.

MyRecyclerViewAdapter2.java:

MyRecyclerViewAdapter2.java:

    package com.example.app;


import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.RecyclerView;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.android.volley.toolbox.ImageLoader;

import java.util.List;

public class MyRecyclerViewAdapter2 extends RecyclerView.Adapter<ListRowViewHolder> {
    private List<ListItems> listItemsList;
    private Context mContext;
    private ImageLoader mImageLoader;
    private int focusedItem = 0;

public MyRecyclerViewAdapter2(Context context, List<ListItems> listItemsList) {
    this.mContext = context;
    this.listItemsList = listItemsList;
}

@Override
public ListRowViewHolder onCreateViewHolder(final ViewGroup viewGroup, int position) {
    View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.card_view_row2, null);

    ListRowViewHolder holder = new ListRowViewHolder(v);

    holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            TextView postUrl =  (TextView) v.findViewById(R.id.postId);
            String post_Id = postUrl.getText().toString();

            Intent intent = new Intent(mContext, ViewPostActivity.class);
            intent.putExtra("id", post_Id);
            mContext.startActivity(intent);

        }
    });

    return holder;
}

@Override
public void onBindViewHolder(ListRowViewHolder listRowViewHolder, int position) {
    ListItems listItems = listItemsList.get(position);
    listRowViewHolder.itemView.setSelected(focusedItem == position);

    listRowViewHolder.getLayoutPosition();

    mImageLoader = MySingleton.getInstance(mContext).getImageLoader();
    listRowViewHolder.thumbnail.setImageUrl(listItems.getThumbnail(), mImageLoader);
    listRowViewHolder.thumbnail.setDefaultImageResId(R.drawable.website_placeholder);

    listRowViewHolder.title.setText(Html.fromHtml(listItems.getTitle()));
    listRowViewHolder.date.setText(Html.fromHtml(listItems.getDate()));
    listRowViewHolder.content.setText(Html.fromHtml(listItems.getContent()));
    listRowViewHolder.postId.setText(Html.fromHtml(listItems.getPostId())); // This line of code leads to crashing of app
}

public void clearAdapter () {
    listItemsList.clear();
    notifyDataSetChanged();
}


@Override
public int getItemCount() {
    return (null != listItemsList ? listItemsList.size() : 0);
}}

推荐答案

您的错误是因为您对空字符串调用Html.fromHtml. 您应该在调用Html.fromHtml之前测试listItems.getPostId()的值.

Your error because means that you call Html.fromHtml on a null string. You should test the value of listItems.getPostId() before calling Html.fromHtml.

这篇关于尝试在空对象引用上调用虚拟方法'int java.lang.String.length()'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆