我试图通过创建接口将一些数据从Fragment发送到我的活动。
所以首先我在我的片段类中创建了一个接口,
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发布于 2017-04-05 23:35:37
也许您正在使用不同的onAttach方法。试试这个(看看参数):
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof OnMediaSelected) {
callback = (OnMediaSelected) context;
}
}您也应该更改onDettach。
发布于 2017-04-06 01:33:40
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接口
https://stackoverflow.com/questions/43235127
复制相似问题