提交后捆绑从片段中消失了吗?

时间:2016-06-11 22:17:18

标签: java android-fragments android-intent android-activity bundle

我有一个活动,其唯一目的是托管片段。我使用Intent开始此活动,然后使用来自Intent的信息将args添加到我想要添加到新Activity的Fragment中。

这是SingleClickerActivity中的onCreate(此活动由Intent启动)。单步执行此操作后,我已验证该片段是否包含我要发送的参数。 Fragment has argument (this is right before the transaction step)

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(getLayoutResId());

    UUID clickerId = (UUID) getIntent().getSerializableExtra(EXTRA_CLICKER_ID);
    FragmentManager fm = getSupportFragmentManager();
    Fragment fragment = fm.findFragmentById(R.id.fragment_container);

    if (fragment == null) {
        fragment = createFragment(clickerId);
        fm.beginTransaction()
                .add(R.id.fragment_container, fragment)
                .commit();
    }
}

我已经制作了片段,它有args包,我提交了它。但是,当我进入片段“onCreate:

”时
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mClickerId = (UUID) getArguments().getSerializable(ARG_CLICKER_ID);
    mClicker = ClickerBox.get(getActivity()).getClicker(mClickerId);
}

getArguments()返回null。捆绑有噗。它在哪里迷路?

1 个答案:

答案 0 :(得分:0)

解决!

onCreate方法称为super,它创建了另一个没有参数的片段。我得到了两个片段,一个是args,一个是没有。空的是那个与活动相关的人。我在onCreate中取出了SingleClickerActivity,以便我使用继承的版本,然后移动行UUID clickerId = (UUID) getIntent().getSerializableExtra(EXTRA_CLICKER_ID); into createFragment().