2017-04-05 63 views
0

我试图通过创建接口将一些数据发送到我的活动从片段。试图调用片段接口方法时发生NullPointerException

所以首先我创建了我的片段类的接口,

public interface OnMediaSelected{ 
     public void onItemPicked(String url, String type); 

    } 

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

@Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 
     callback = (OnMediaSelected) activity; 
    } 

而在另一种方法,我打电话给我的接口回调,

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)都不为空。

但是当我运行这个程序,我得到这个错误

Attempt to invoke interface method 'void com.buckydroid.app.MoreOptions$OnMediaSelected.onItemPicked(java.lang.String, java.lang.String)' on a null object reference 
+0

是您的活动实现接口OnMediaSelected接口? – ditn

+0

如果可能,放置活动和片段代码。 – androidnoobdev

回答

0

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

@Override 
    public void onAttach(Context context) { 
     super.onAttach(context); 
     if (context instanceof OnMediaSelected) { 
      callback = (OnMediaSelected) context; 
     } 
    } 

你应该改变onDettach了。

0
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()); 
    } 
} 

,你需要实现你的活动

相关问题