首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试调用片段接口方法时出现NullPointerException

问尝试调用片段接口方法时出现NullPointerException
EN

Stack Overflow用户
提问于 2017-04-05 23:09:08
回答 2查看 527关注 0票数 0

我试图通过创建接口将一些数据从Fragment发送到我的活动。

所以首先我在我的片段类中创建了一个接口,

代码语言:javascript
复制
public interface OnMediaSelected{
        public void onItemPicked(String url, String type);

    }

然后在onAttach方法中初始化回调变量,

代码语言:javascript
复制
   @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        callback = (OnMediaSelected) activity;
    }

在另一个方法中,我调用了我的接口回调,

代码语言:javascript
复制
public void Action(String url,String type){
    Log.i("data check",url);
    try {
        callback.onItemPicked(url,type);
    }catch (Exception e){
        Log.i("Error",e.toString());

    }
}

这些数据(url、type)都不为空。

但是当我运行这个应用程序时,我得到了这个错误

代码语言:javascript
复制
Attempt to invoke interface method 'void com.buckydroid.app.MoreOptions$OnMediaSelected.onItemPicked(java.lang.String, java.lang.String)' on a null object reference
EN

回答 2

Stack Overflow用户

发布于 2017-04-05 23:35:37

也许您正在使用不同的onAttach方法。试试这个(看看参数):

代码语言:javascript
复制
@Override
    public void onAttach(Context context) {
        super.onAttach(context);
        if (context instanceof OnMediaSelected) {
            callback = (OnMediaSelected) context;
        }
    }

您也应该更改onDettach。

票数 0
EN

Stack Overflow用户

发布于 2017-04-06 01:33:40

代码语言:javascript
复制
public void Action(String url,String type){
    Log.i("data check",url);
    try {
        ((OnMediaSelected)getActivity()).onItemPicked(url,type);
    }catch (Exception e){
        Log.i("Error",e.toString());
    }
}

并且您需要在活动中实现OnMediaSelected接口

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43235127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档