Java android listview null正在尝试设置适配器()

Java android listview null正在尝试设置适配器(),java,android,listview,Java,Android,Listview,我试图在我的片段中实现一个列表视图,不管我怎么做,我都会得到一个NullPointerException。我检查对象是否为null并记录它们是否为null,然后显示ListView为null,但ListItemAdapter似乎未初始化 ListItemAdapter listAdapter = new ListItemAdapter(getContext(), R.layout.list_item_fragment, walks); if(listAdapter == null)

我试图在我的
片段中实现一个
列表视图
,不管我怎么做,我都会得到一个
NullPointerException
。我检查对象是否为null并记录它们是否为null,然后显示
ListView
为null,但
ListItemAdapter
似乎未初始化

   ListItemAdapter listAdapter = new ListItemAdapter(getContext(), R.layout.list_item_fragment, walks);
    if(listAdapter == null)
        Log.d("ListAdapter: ", "Null!!!");
    else
        Log.d("ListAdapter: ", "Not Null!!!");

    ListView listView = (ListView) getActivity().findViewById(R.id.list_view);

    if(listView == null)
        Log.d("ListView: ", "Null!!!");
    else
        Log.d("ListView: ", "Not Null!!!");
    listView.setAdapter(listAdapter);
编辑:这是整个片段

package com.janedoe.anothertabexample.fragments;

import android.app.Activity;
import android.os.Bundle;
import android.os.SystemClock;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;

import com.janedoe.anothertabexample.R;
import com.janedoe.anothertabexample.models.WalkModel;

import java.util.ArrayList;
import com.janedoe.anothertabexample.Adapters.*;

public class TabFragment1 extends Fragment {


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        ArrayList<WalkModel> walks = new ArrayList<>();
        WalkModel walk1 = new WalkModel();
        walk1.setDescription("Walked around the block.");
        walk1.setElapsed_time(SystemClock.uptimeMillis() - 99999999);

        WalkModel walk2 = new WalkModel();
        walk2.setDescription("Walked to store.");
        walk2.setElapsed_time(SystemClock.uptimeMillis() - 98999000);

        WalkModel walk3 = new WalkModel();
        walk3.setDescription("Ran a million miles.");
        walk3.setElapsed_time(SystemClock.uptimeMillis() - 97999999);

        WalkModel walk4 = new WalkModel();
        walk4.setDescription("Biked");
        walk4.setElapsed_time(SystemClock.uptimeMillis() - 96999999);

        walks.add(walk1);
        walks.add(walk2);
        walks.add(walk3);
        walks.add(walk4);

        ListItemAdapter listAdapter = new ListItemAdapter(getContext(), R.layout.list_item_fragment, walks);
        if(listAdapter == null)
            Log.d("ListAdapter: ", "Null!!!");
        else
            Log.d("ListAdapter: ", "Not Null!!!");
        ListView listView = (ListView) getView().findViewById(R.id.list_view);
        if(listView == null)
            Log.d("ListView: ", "Null!!!");
        else
            Log.d("ListView: ", "Not Null!!!");
        listView.setAdapter(listAdapter);

        return inflater.inflate(R.layout.tab_fragment_1, container, false);
    }
}
下面是xml的片段

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#d3d3d3">

    <ListView
        android:id="@+id/list_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textAlignment="center"></ListView>

</RelativeLayout>

我甚至看不到你的片段在哪里。必须先调用片段上的方法

活动中没有ListView,因为它位于片段中。通过这样做:

ListView listView = (ListView) getActivity().findViewById(R.id.list_view);
你正在发现一些不存在的东西。相反,由于它位于片段中,请执行以下操作:

ListView listView = (ListView) findViewById(R.id.list_view);
现在,
列表视图将实际存在。

使用:

ListView ListView=(ListView)rootView.findViewById(R.id.list\u视图)


这将解决您的问题。

onCreateView()
的末尾,您正在膨胀的视图层次结构中有
列表视图

getView()
返回
onCreateView()返回的内容,但尚未返回任何内容。此外,层次结构尚未附加到任何活动,因此使用
getActivity().findViewById()
的原始代码也存在相同的问题

因此,应提前膨胀视图层次结构并将其存储在变量中:

View root = inflater.inflate(R.layout.tab_fragment_1, container, false);
然后使用此选项访问其子视图:

ListView listView = (ListView) root.findViewById(R.id.list_view);
最后返回整个层次结构:

return root;

您应该在Fragment.onViewCreated回调方法中获得ListView的引用,该方法的第一个参数是该片段的根视图,因此只需调用第一个参数对象的view.findViewById方法

您的logcat在哪里?此ListView是片段或活动的一部分吗?在活动的XML中是否有id为
list\u view
的ListView?该代码在片段中的何处?如果ListView位于
fragment
中,则无需使用
getActivity()
只需在调用
onViewCreated
后使用getView方法,检查@laalto,这可能已解决当前问题。我知道
片段中没有
findViewById()
@laalto,但我们不需要
getActivity
我用上下文更新了我的问题。另外,我不能在我的片段中调用
findViewById()
,它无法解析该方法…太棒了,这非常有效。万分感谢,我对安卓系统还是很陌生,甚至都不知道该找什么。在我读了你的帖子和我的方法之后,它点击了那里发生的事情。我没有意识到它需要片段布局,但我想这就是ListView所在的位置,所以它是有意义的!我正在开发的应用程序只是将各种教程的部分内容拼凑在一起,并对其进行零碎修改,使其更适合我自己的结果……哈哈,再次感谢我在那里遇到的一些挫折
ListView listView = (ListView) root.findViewById(R.id.list_view);
return root;