getSerializableExtra返回null

时间:2013-06-25 09:32:54

标签: java android

我的例子:

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 - &gt; null ,我无法理解问题所在。

3 个答案:

答案 0 :(得分:4)

putExtra(String, Serializable)的文档说

  

名称必须包含一个包前缀,例如app com.android.contacts将使用“com.android.contacts.ShowAll”之类的名称。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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