我是Android开发中的新手,我遇到了问题。 我为我的应用创建了一个片段。 这个Fragment调用Asynctask从我的数据库中获取数据。
但是当我想将这些数据从我的Fragment传递给我的mainActivity时,我发生了崩溃。这是我的虚空:
`
public void returnedFromConnexionAsynctask(String returned) {
Log.i(LOG_TAG, returned);
if(mActivity!=null){
((MainActivity) getActivity()).returnedFromConnexionFragment(returned);
}
else {
Log.i(LOG_TAG,"getActivity is null");
}
}
`
mActivity如下所示:
public Context mActivity;
@Override
public void onAttach(Context context) {
super.onAttach(context);
mActivity = context;
}
我尝试了很多东西,但我不知道该怎么办...... 谢谢!
答案 0 :(得分:0)
您必须使用您的活动将实施的回调接口。当从向导创建新片段时,Andoird工作室会为您生成此类存根。尝试一下。
如果您有这样的界面,在onAttach
期间您将保存对片段中活动的引用并且瞧
答案 1 :(得分:0)
这不一定是执行此操作的最佳方式(使用此处所述的界面可能是Communicating with activity)的最佳方式。
您可以在活动中为班级成员创建setter方法。然后在你的片段中,你可以这样做:
((mActivity)getActivity()).setContext(context);
同样,这不是最好的方式,但可能是最简单的方法。
答案 2 :(得分:0)
声明一个接口并声明一个回调方法说
public interface xyz{
public void callback( yourdata here );
}
在您的活动中实现此接口,并使用返回的信息实现该方法以执行您想要的操作。
现在在你的片段里面做这个:
((xyz)getActivity()).callback(put your data here);