【发布时间】:2014-09-01 18:19:24
【问题描述】:
有什么区别
Intent i = new Intent(getActivity(), HomeworkPagerActivity.class);
i.putExtra(HomeworkFragment.EXTRA_HOMEWORK_ID, c.getId());
startActivity(i);
和:
HomeworkFragment newFragment = new HomeworkFragment();
Bundle args = new Bundle();
args.putInt(HomeworkFragment.ARG_POSITION, position);
newFragment.setArguments(args);
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);
transaction.commit();
我正在使用一个 Fragment 来启动另一个 Fragment。
但是,应该使用哪一个?为什么?
此外,我需要将数据从子 Fragment (HomeworkFragment) 传输回最初启动它的 Fragment。哪种设置可以轻松传输数据(如身份证号)?
【问题讨论】:
-
"应该使用哪一个,为什么?" : 恕我直言,你不应该使用它们。 Fragments 的设计理念是它们应该是独立的和可重复使用的。如果一个
Fragment“知道”某个特定的Activity或另一个Fragment,你就破坏了那个模型。正如 Little Child 所提到的,您的 Fragments 可以定义接口并使用这些接口与父Activity进行通信,这应该允许间接控制和通信。
标签: android android-intent android-fragments fragment