如何将数据从Fragment传递到MainActivity

时间:2017-12-16 23:05:46

标签: java android android-fragments

我是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;
    }

我尝试了很多东西,但我不知道该怎么办...... 谢谢!

3 个答案:

答案 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);