如何在相同的片段活动中将数据从片段发送到片段?

我有一个容器,其中有两个片段,我的第一个片段工作正常,我想将它发送到第二个片段。 这是我的第一片段

private class LoadLink extends AsyncTask { @Override protected String[] doInBackground(String... params) { Document document = null; try { document = Jsoup.connect(params[0].toString()).timeout(10 * 1000).userAgent("Mozilla").get(); download = document.getElementsByClass("actions").first().select("a").attr("href").toString(); } catch (Exception e) { e.printStackTrace(); } return new String[]{download, params[1]}; } } 

现在我想知道如何在我的第二个片段中接收它

首先使用接口作为回调与托管fragment1的活动进行通信。 然后你可以与fragment2进行通信。

您可以找到更多信息和代码片段@

http://developer.android.com/training/basics/fragments/communicating.html

示例:

FragmentOne —> MainActivity —> FramentTwo

MainActivity实现接口ReturnData并覆盖senData

 public class MainActivity extends Activity implements ReturnData{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); FragmentOne newFragment = new FragmentOne(); FragmentTransaction transaction = getFragmentManager().beginTransaction(); transaction.replace(R.id.container, newFragment); transaction.addToBackStack(null); transaction.commit(); } @Override public void sendData(String result) { // TODO Auto-generated method stub FragmentTwo newFragment = new FragmentTwo(); Bundle args = new Bundle(); args.putString("key",result); newFragment.setArguments(args); FragmentTransaction transaction = getFragmentManager().beginTransaction(); transaction.replace(R.id.container, newFragment); transaction.addToBackStack(null); transaction.commit(); } } 

activity_main.xml中

   

该布局有一个FrameLayout ,它是一个添加/替换framgents的视图组

FragmentOne.java

FragmentOne使用interface作为活动的回调来传递值。

 public class FragmentOne extends Fragment { public interface ReturnData { public void sendData(String result); } ReturnData mCallback; @Override public void onAttach(Activity activity) { super.onAttach(activity); // This makes sure that the container activity has implemented // the callback interface. If not, it throws an exception try { mCallback = (ReturnData) activity; } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement ReturnData"); } } TextView tv2; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.frag1,container,false); tv2 = (TextView) rootView.findViewById(R.id.textView2); Button b= (Button) rootView.findViewById(R.id.button1); b.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub mCallback.sendData(tv2.getText().toString()); } }); return rootView; } } 

frag1.xml

       

FragmentTwo

 public class FragmentTwo extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.frag2,container,false); TextView tv1 = (TextView) rootView.findViewById(R.id.textView1); String text = getArguments().getString("key"); tv1.append(text); return rootView; } } 

frag2.xml

     

捕捉

在此处输入图像描述

在此处输入图像描述