StartActivity和FragmentTransaction之间的区别

时间:2014-09-01 18:19:25

标签: android android-intent android-fragments fragment

之间有什么区别
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(HomeworkFragment)中的数据传回到首先启动它的Fragment。哪种设置可以轻松传输数据(如身份证号码)?

2 个答案:

答案 0 :(得分:2)

好的,看。

Intent i = new Intent(getActivity(), HomeworkPagerActivity.class);
i.putExtra(HomeworkFragment.EXTRA_HOMEWORK_ID, c.getId());
startActivity(i);  

这将启动一个全新的Activity,它拥有自己的生命周期。在哪里:

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 

transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null); 

transaction.commit();   

Fragment替换R.id.fragment_container中的newFragment


  

但是,应该使用哪一个?为什么?

取决于您的需求。

  

此外,我需要从子Fragment传输数据   (HomeworkFragment)回到第一个发布它的Fragment   地点。哪种设置允许传输数据(如id号)   容易?

假设您有两个Fragment,您可以使用接口将数据首先传输回活动,然后传输回第二个片段。

答案 1 :(得分:1)

一个人开始活动。

另一个实例化并将片段附加到fragment_container,这是调用活动布局的一部分。