getSerializableExtra()随机为null

时间:2018-03-10 18:04:35

标签: android android-intent android-activity

一个活动中有一个链接,点击它后会打开另一个活动。我为第二个活动添加了enum参数。

@Override
protected void onCreate(Bundle savedInstanceState) {
    binding.myLink.setOnClickListener(new View.OnClickListener() {
        // ...
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(getActivityContext(), SecondActivity.class);
                intent.putExtra(KEY, MyEnum.ENUM_VALUE);
                startActivity(intent);
            }
        });
        // ...
}

在第二个活动的onCreate中,我读了这个参数

@Override
protected void onCreate(Bundle savedInstanceState) {
    // ...
    // get value
    FirstActivity.MyEnum value = (FirstActivity.MyEnum ) getIntent()
            .getSerializableExtra(AboutActivity.KEY);

    // ...
}

一切正常但在Crashlytics中我发现对某些用户而言价值为null。第二个活动仅从第一个活动开始,而不是从其他地方开始。

有人可以建议我这种行为的情景吗?什么时候可以这样发生?

我打开了我的应用程序,打开了第二个活动并将应用程序置于后台。几个小时后,我从应用程序列表中打开了我的应用程序,一切正常。什么时候可以发生的更多想法。

1 个答案:

答案 0 :(得分:-1)

使用它:

     @Override
        public void onClick(View view) {
            Intent intent = new Intent(getActivityContext(), SecondActivity.class);
            Bundle bundle=new Bundle();
            bundle.putSerializable(serializableKEY,yourSerializableClass);
                intent.putExtras(KEY, bundle);
                startActivity(intent);
            }
        });

和第二项活动:

Bundle bundle=getIntent().getExtras();
yourSerializableClass clazz=(yourSerializableClass)bundle.getSerializable(serializableKEY);