我有一个包含两个片段的大型布局文件:列表片段和细节片段.列表片段应根据传递给Activity的TYPE参数列出不同的数据.问题是当我在Activity的onCreate()方法中调用setContentView()方法时,片段创建,我无法将此参数传递给它.码:
公共类VideoPlayerActivity扩展了FragmentActivity {
Type type; MyListFragment listFragment; FragmentManager fragmentManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_layout); fragmentManager = getSupportFragmentManager(); Bundle extras = getIntent().getExtras(); if (extras != null && extras.containsKey(Constants.KEY_TYPE)) { int type = extras.getInt(Constants.KEY_TYPE); type = Type.getTypeByValue(type); } if (findViewById(R.id.fragment_container) != null) { // Normal Screen Layout if (savedInstanceState != null) { return; } listFragment = new MyListFragment(); getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, listFragment).commit(); } else { // Large Screen layout setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); listFragment = (MyListFragment) fragmentManager.findFragmentById(R.id.listFragment); } }
如果我new
是活动,我可以在其onAttach()方法上调用一个方法来获取参数,但是在这个例子中我已经在xml布局中定义了Fragments,并且它们在活动创建时初始化.你有什么主意吗?
您可以创建一个Bundle
并使用该setArguments()
函数将其传递给片段.然后Bundle
可以从该getArguments()
功能获得.
文档:http://developer.android.com/reference/android/app/Fragment.html#getArguments()