Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试在空对象错误[android]上调用方法_Java_Android - Fatal编程技术网

Java 尝试在空对象错误[android]上调用方法

Java 尝试在空对象错误[android]上调用方法,java,android,Java,Android,当我试图运行我的应用程序时,我得到一个错误,说我试图调用一个空对象上的方法。我知道错误发生在哪里,但我不确定原因,因为我认为我之前初始化了对象。 代码如下: public class InjuryListFragment extends Fragment{ private RecyclerView mInjuryRecyclerView; private InjuryAdapter mAdapter; @Override public View onCreateV

当我试图运行我的应用程序时,我得到一个错误,说我试图调用一个空对象上的方法。我知道错误发生在哪里,但我不确定原因,因为我认为我之前初始化了对象。 代码如下:

public class InjuryListFragment extends Fragment{
    private RecyclerView mInjuryRecyclerView;
    private InjuryAdapter mAdapter;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
        View view=inflater.inflate(R.layout.fragment_injury_list, container, false);
        mInjuryRecyclerView=(RecyclerView)view.findViewById(R.id.injury_recycler_view);
        mInjuryRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
        updateUI();
        return view;
    }
    private void updateUI(){
        InjuryLab injuryLab=InjuryLab.get(getActivity());
        List<Injury>injuries=injuryLab.getInjuries();
        mAdapter=new InjuryAdapter(injuries);
        mInjuryRecyclerView.setAdapter(mAdapter);

    }
    private class InjuryHolder extends RecyclerView.ViewHolder implements View.OnClickListener{

        private TextView mTitleTextView;
        private TextView mDescriptionTextView;
        private Injury mInjury;
        public InjuryHolder(View itemView){
            super(itemView);
            itemView.setOnClickListener(this);
            mTitleTextView=(TextView)itemView.findViewById(R.id.list_item_injury_title_text_view);
            mDescriptionTextView=(TextView)itemView.findViewById(R.id.injury_description);
        }
        public void bindInjury(Injury injury){
            mInjury=injury;
            mTitleTextView.setText(mInjury.getTitle());
            mDescriptionTextView.setText(mInjury.getDescription());
        }
        @Override
        public void onClick(View v){
            Intent intent=InjuryActivity.newIntent(getActivity(), mInjury.getId());
            startActivity(intent);
        }
    }

错误发生在MDDescriptionTextView.setTextmInjury.getDescription行

仔细检查xml和代码中视图的id。在初始化TextView之前,检查是否设置了文本。在执行bindInjury方法之前,还要检查是否调用了构造函数

public void bindInjury(Injury injury){
  if(injury != null){
    mInjury=injury;
  }
  mTitleTextView.setText(mInjury.getTitle());
  mDescriptionTextView.setText(mInjury.getDescription());
}

具体告诉我们错误,或者更好地发布日志。空对象是MDDescriptionTextView还是mInjury?日志如下09-23 00:03:37.106 19159-19159/com.bignerdranch.android.firstaid E/AndroidRuntime﹕ 致命异常:主进程:com.bignerdranch.android.firstaid,PID:19159 java.lang.NullPointerException:尝试在com.bignerdranch.android.firstaid.InjuryListFragment$InjuryHolder.bindInjuryInjuryListFragment.java:54处的空对象引用上调用虚拟方法'void android.widget.TextView.setTextjava.lang.CharSequence'java:79发布您的适配器代码。