3

我的例子:

public static final String EXTRA_TARGET_FRAGMENT = "fragment_to_show";

    public static void show(Activity pActivity,
            Class<? extends Fragment> fragment) {
        Intent intent = new Intent(pActivity, HomeActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        intent.putExtra(EXTRA_TARGET_FRAGMENT, fragment);
        pActivity.startActivity(intent);
    }

    @SuppressWarnings("unchecked")
    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent);
        mUpcomingTarget = (Class<Fragment>) intent
                .getSerializableExtra(EXTRA_TARGET_FRAGMENT);

}

mUpcomingTarget --> null,我无法理解问题所在。

4

3 回答 3

5

文档putExtra(String, Serializable)

该名称必须包含包前缀,例如应用程序 com.android.contacts 将使用类似“com.android.contacts.ShowAll”的名称。

更改您EXTRA_TARGET_FRAGMENT的以包前缀开头。

于 2013-06-25T10:43:03.033 回答
0

检查两个活动中的字符串 EXTRA_TARGET_FRAGMENT 是否等于 fragment_to_show !!它发生在我身上,我有一个不同的大写字母,当我更正它时它起作用了:)

于 2013-07-24T07:36:00.257 回答
0

确保“片段”的所有类成员和类本身都实现了 Serializable 接口。对象不会对其进行序列化,并且android不会对此发出任何警告。尝试将您的对象序列化为字节数组(Java Serializable Object to Byte Array)并检查它是否成功。

于 2015-11-26T06:25:22.560 回答