繁体   English   中英

从片段向活动传递值时,空指针异常

[英]Null Pointer Exception when passing value from Fragment to Activity

父活动具有这样的实例化的字符串列表。

    List<String> taskList = asList("Write some code", "Database stuff", "Test the cloud!");

它还具有HeadlineSelected-listener实现为接口,以及ArticleSelected-method。 ArticleSelected方法从列表中删除一个元素。

    public interface OnHeadlineSelectedListener {
        public void onArticleSelected(int position);
    }

    @Override
    public void onArticleSelected(int position) {
        taskList.remove(position);
    }

在该片段中,我有一个HeadlineListener来向其父活动发送内容。

    OnHeadlineSelectedListener mCallback;

在片段中,选择项目后,我将使用HeadlineListener。

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
        long id) {
        mCallback.onArticleSelected(position);
        finish();
}

我可以很好地启动该应用程序,但是当我选择一个项目时,该应用程序将停止并且出现空指针异常。 我究竟做错了什么?

但是当我选择一个项目时,应用程序停止运行,并且出现空指针异常。 我究竟做错了什么?

您需要初始化mCallBack 我不确定初始化是否正确。

但是您需要以下内容。

报价文件

片段在其onAttach()生命周期方法中捕获接口实现,然后可以调用Interface方法以与Activity通信。

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);

    // This makes sure that the container activity has implemented
    // the callback interface. If not, it throws an exception
    try {
        mCallback = (OnHeadlineSelectedListener) activity;
    } catch (ClassCastException e) {
        throw new ClassCastException(activity.toString()
                + " must implement OnHeadlineSelectedListener");
    }
}

我收到错误的原因是因为我通过在cosntructor中设置其值使List不可更改。 如果在创建taskList作为成员变量时根本没有设置任何值。

private List<String> taskList;

然后,我可以将其放入onCreate中的干净列表中

taskList = new ArrayList<String>();

然后添加元素。 由于我打算将其放大以从onCreate的数据库中读取,因此这不是问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM