例如,在 ListActivity 托管的列表视图中,当用户点击列表中的项目时,将启动一项新活动,之前的活动将额外数据传输到新活动,如下所示:
public class Notepadv2 extends ListActivity {
...
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
Intent i = new Intent(this, NoteEdit.class);
i.putExtra(NotesDbAdapter.KEY_ROWID, id);
startActivityForResult(i, ACTIVITY_EDIT);
}
}
如果我使用片段应该如何?我的意思是如果我有一个Activity来托管2个片段,并进行如下所示的片段交易:
// Create new fragment and transaction
Fragment newFragment = new ExampleFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);
// Commit the transaction
transaction.commit();
如何通过主机活动将额外数据从一个片段传输到另一个片段?
我知道在Android开发者网页上,有good document如何使用片段以及如何与活动进行通信,但是没有关于如何将数据从一个片段传输到另一个片段的描述.... / p>
答案 0 :(得分:22)
使用
Bundle data = new Bundle();
data.putString("name",value);
Fragment fragment = new nameOfFragment();
fragment.setArguments(data);
.navigateTo(fragment);
答案 1 :(得分:3)
从活动中您按意图发送数据:
Bundle bundle = new Bundle();
bundle.putString("key", "value");
// set Fragmentclass Arguments
Fragmentclass fragmentobj = new Fragmentclass();
fragmentobj.setArguments(bundle);
并在Fragment onCreateView方法中:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
String strtext = getArguments().getString("key");
return inflater.inflate(R.layout.fragment, container, false);
}
我希望对你有所帮助。