Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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 将对象加载到ListView时出现NullPointerException_Java_Android_Android Fragments_Android Listview - Fatal编程技术网

Java 将对象加载到ListView时出现NullPointerException

Java 将对象加载到ListView时出现NullPointerException,java,android,android-fragments,android-listview,Java,Android,Android Fragments,Android Listview,我正在尝试对我正在构建的应用程序的UI进行一些模拟。我使用导航抽屉作为根布局,我使用嵌套片段作为我的菜单项之一,以便使用带有选项卡指示器的ViewPager。当我只是用一些基本文本填充每个片段时,这部分工作正常,但是当我用ListView替换其中一个子片段(一个选项卡视图)中的基本文本时;我在片段类中得到一个java.lang.NullPointerException public class FragmentVenues extends ListFragment { private stat

我正在尝试对我正在构建的应用程序的UI进行一些模拟。我使用导航抽屉作为根布局,我使用嵌套片段作为我的菜单项之一,以便使用带有选项卡指示器的ViewPager。当我只是用一些基本文本填充每个片段时,这部分工作正常,但是当我用ListView替换其中一个子片段(一个选项卡视图)中的基本文本时;我在片段类中得到一个java.lang.NullPointerException

public class FragmentVenues extends ListFragment {

private static final String ARGUMENT_KEY_PROPERTIES = "venue";


public static FragmentVenues newInstance(ArrayList<Venue> venues) {
    final Bundle args = new Bundle();
    args.putParcelableArrayList(ARGUMENT_KEY_PROPERTIES, venues);

    final FragmentVenues f = new FragmentVenues();
    f.setArguments(args);
    return f;
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    final List<Venue> venues =      getArguments().getParcelableArrayList(ARGUMENT_KEY_PROPERTIES);//error here
    setListAdapter(new VenueListAdapter(getActivity(), venues));
}

试试这个,用这个替换你的类

public class VenueListAdapter extends ArrayAdapter<Venue>{
private final LayoutInflater mInflater;

private List<Venue> venue;

public VenueListAdapter(Context context, List<Venue> objects) {

super(context, -1, objects);

 mInflater = LayoutInflater.from(context);

venue=objects;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

final Venue venue = getItem(position);

if (convertView == null) {
      convertView = mInflater.inflate(R.layout.fragmentvenues, parent, false);
    }

// This will be made more efficient later
TextView tv = (TextView) convertView.findViewById(R.id.city);
tv.setText(venue.getCity() + ", " + venue.getState());
tv = (TextView) convertView.findViewById(R.id.venuename);
tv.setText(venue.getVenueName());
tv = (TextView) convertView.findViewById(R.id.street);
tv.setText(venue.getStreetAddress());
tv = (TextView) convertView.findViewById(R.id.number);
tv.setText(venue.getPhoneNumber());

return convertView;

}
}
公共类VenueListAdapter扩展了ArrayAdapter{
私人最终布局平面图;
私人场地名单;
public VenueListAdapter(上下文、列表对象){
super(上下文,-1,对象);
mInflater=LayoutInflater.from(上下文);
地点=物体;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
最终场馆=获取项目(位置);
if(convertView==null){
convertView=mInflater.充气(R.layout.FragmentVictories,父项,false);
}
//这将在以后提高效率
TextView tv=(TextView)convertView.findViewById(R.id.city);
tv.setText(venue.getCity()+”,“+venue.getState());
tv=(TextView)convertView.findViewById(R.id.venuename);
tv.setText(venue.getVenueName());
tv=(TextView)convertView.findViewById(R.id.street);
tv.setText(地点.getStreetAddress());
tv=(TextView)convertView.findViewById(R.id.number);
tv.setText(vention.getPhoneNumber());
返回视图;
}
}

在场馆等级和场地碎片上实施包裹

public class Venue implements Parcelable{

@Override
public int describeContents() {
    // TODO Auto-generated method stub
    return 0;
}

@Override
public void writeToParcel(Parcel dest, int flags) {
    // TODO Auto-generated method stub

}

}

您能否添加堆栈跟踪并指出哪一行导致了NPE?谢谢。你确定FragmentVinces类的静态安装程序“newInstance”在调用“onActivityCreated”之前被调用了吗?“newInstance”的返回值是否与调用“onActivityCreated”的实例相同?@IanGilI添加了堆栈跟踪,它出现在第47行的碎片中。@Jaemokle不,我不是,我如何确保这一点?@Joshua Log f来自newInstance,从onActivityCreated记录这一点。并检查它们是否相同。我尝试了此操作,但仍收到相同的错误。我也尝试了此操作,但仍收到相同的错误。
public class VenueListAdapter extends ArrayAdapter<Venue>{
private final LayoutInflater mInflater;

private List<Venue> venue;

public VenueListAdapter(Context context, List<Venue> objects) {

super(context, -1, objects);

 mInflater = LayoutInflater.from(context);

venue=objects;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

final Venue venue = getItem(position);

if (convertView == null) {
      convertView = mInflater.inflate(R.layout.fragmentvenues, parent, false);
    }

// This will be made more efficient later
TextView tv = (TextView) convertView.findViewById(R.id.city);
tv.setText(venue.getCity() + ", " + venue.getState());
tv = (TextView) convertView.findViewById(R.id.venuename);
tv.setText(venue.getVenueName());
tv = (TextView) convertView.findViewById(R.id.street);
tv.setText(venue.getStreetAddress());
tv = (TextView) convertView.findViewById(R.id.number);
tv.setText(venue.getPhoneNumber());

return convertView;

}
}
public class Venue implements Parcelable{

@Override
public int describeContents() {
    // TODO Auto-generated method stub
    return 0;
}

@Override
public void writeToParcel(Parcel dest, int flags) {
    // TODO Auto-generated method stub

}