尝试在可扩展列表的空对象引用上调用虚拟方法

问题描述

这是我第一次在StackOverflow中提出问题,我想向您展示我的代码,如下所示:

SecondFragment类

@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_second,container,false);
    listView = (ExpandableListView) view.findViewById(R.id.expand_list);

    final List<String> listGroup = new ArrayList<>();
    listGroup.add("Menu 1");
    listGroup.add("Menu 2");
    listGroup.add("Menu 3");

    List<Makanan> listItem1 = new ArrayList<>();
    List<Makanan> listItem2 = new ArrayList<>();
    List<Makanan> listItem3 = new ArrayList<>();
    listItem1.add(new Makanan("Menu 1","Ikan","Telur dan Susu","Panjang","Bandung"));
    listItem2.add(new Makanan("Menu 2","Bandung"));
    listItem3.add(new Makanan("Menu 3","Bandung"));

    final HashMap<String,List<Makanan>> lstItemsGroup = new HashMap<>();
    this.mainPresenter.addList(listGroup.get(0),listItem1);
    this.mainPresenter.addList(listGroup.get(1),listItem2);
    this.mainPresenter.addList(listGroup.get(2),listItem3);

    final ListMakanan listMakanan = new ListMakanan(getActivity(),listGroup,lstItemsGroup);
    listView.setAdapter(listMakanan);

    FloatingActionButton fab = view.findViewById(R.id.fab);
    fab.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            listener.changePage(3);
        }
    });
    return view;
}

MainPresenter类

public class MainPresenter {
protected final HashMap<String,List<Makanan>> makananList;
protected IMainActivity ui;

public MainPresenter(IMainActivity active){
    this.ui = active;
    this.makananList = new HashMap<String,List<Makanan>>();
}
public void addList(String title,List<Makanan> listMakanan){
    makananList.put(title,listMakanan);
    this.ui.updateList(this.makananList);
    this.ui.resetAddForm();
}

}

问题是,为什么不能在MainPresenter类中使用方法addList()添加/放置我的hashMap?

你们能解决这个问题吗?

非常感谢您。

错误显示标题中)

解决方法

您绝对不要那样做。由makananList引起的空点异常是在addList方法中初始化的。除了在提供MainPresenter实例之前调用方法。 如下所示: MainPresenter mp = new MainPresenter (active) mp.addList(parameters)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...