在三个活动之间传递数据

时间:2015-08-03 03:39:03

标签: android android-fragments android-intent

我有两个片段和一个活动+主要活动

  1. 第一个片段,其中创建了一个调用活动
  2. 的新意图 由上述意图调用的
  3. 活动。我想在这里传递数据
  4. 第二篇片段,我希望从文字视图中获取字符串并将结果传递给上面提到的活动
  5. 所以有意图的片段不包含我想要传递的信息,但是另一个片段包含没有意图的信息。

    我看到的一个解决方案是将第一个片段和活动代码合并到MainActivity中,但在这种情况下,我必须将所有代码复制到那里。

    还有其他解决方案吗?

5 个答案:

答案 0 :(得分:1)

在Fragment1中创建一个接口,该接口必须由activity实现。它将在Fracment1和活动之间进行沟通。 在实现方法中,您可以调用Fragment

private OnFragmentInteractionListener mListener;

点击buttin时的方法

    public void onButtonPressed() {
    if (mListener != null) {
        mListener.onFragmentInteraction(data);
    }
}

将由活动实现的界面

public interface OnFragmentInteractionListener {
    // TODO: Update argument type and name
    public void onFragmentInteraction(String data);
}

答案 1 :(得分:1)

我希望我理解你的问题。

public class Fragment1 extends Fragment
{
  public Intent getIntent ()
  {
    return neededIntent;
  }
}


public class Fragment2 extends Fragment
{
  public String getStringData ()
  {
    return stringData;
  }
}

public class MyActivity extends Activity
{
  public void makeIntent ()
  {
    Intent i = fragment1.getIntent ();
    String data = fragment2.getStringData ();
  }
}

答案 2 :(得分:1)

为两个片段添加标签 您可以在第二个片段中创建公共方法以获取所需的文本,并在第一个片段中访问该片段,如此

Fragment frag2 = getFragmentMangegetFragmentManager().findFragmentByTag("Frag2");
if(frag2 != null){
text = frag2.getRequiredText();
}

答案 3 :(得分:1)

如果您只是想将数据从第二个Fragment传递给父亲Activity,您可以执行以下操作:

//in 2nd Fragmnet you can call whenever you want:
if(getActivity() != null && getActivity() instanceof  FatherActivity){
     // You can create setYourData in your Father Activity.
     ((FatherActivity)getActivity()).setYourData(yourData);         
}

答案 4 :(得分:1)