我的例子:
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 ,我无法理解问题所在。
答案 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)并检查它是否成功。