如何将 class 对象传递给 activity

How to pass class object to activity

我有一个 BarcodeReaderActivity,我将在几个活动中开始,在我开始这个 Activity 之前,我想通过一个目的地 Activity class为此 BarcodeReaderActivity 所以在阅读 QR 码后,我希望它用 Intent 打开目标 Activity

我的第一个解决方案是将目标 class 名称作为字符串传递并在 BarcodeReaderActivity 中使用 switch case 并为 class.[=25= 编写特定的 Intent ]

我还尝试先将 BarcodeReader 创建为 Fragment,但是当我启动目标 Activity 然后删除 Fragment 时,它显示了之前的 Activity 很短的时间,但我不希望这种情况发生。

如果你知道更好的方法,我想从你那里得到一些建议。

您可以在 Android 个活动之间传递对象。最好的方法是从 Android SDK 实现 Parcelable 接口。之后,您可以将您的对象添加到 Intent 负责开始新的 Activity with putExtra("parcelName", object) method.To read Parcelable object in antoher activity 您可以使用这样的代码片段:

getIntent().getExtras().getParcelable("parcelName")

我在这里找到了展示这个想法的好例子:http://shri.blog.kraya.co.uk/2010/04/26/android-parcel-data-to-pass-between-activities-using-parcelable-classes/

此外,如果您想避免大量样板代码,可以使用 auto-parcel 库,它可以为您生成一些可重复的内容。

您可以在 BarcodeReaderActivity 之外构建必需的 Intent 并将其作为额外传递。如果需要,您可以稍后在 BarcodeReaderActivity 中更改此意图。 像这样:

Intent finalIntent = new Intent( context, FinalActivity.class );
Intent barcodeIntent = new Intent( context, BarcodeReaderActivity.class );
barcodeIntent.putExtra( "finalintentkey", finalIntent);
context.startActivity(barcodeIntent);

然后在您的 BarcodeReaderActivity 中检索意图(并根据需要修改它):

Intent finalIntent = getIntent().getParcelableExtra( "finalintentkey" );
// if needed modify intent here
finalIntent.addExtra( "somekey", someneededvalue );
startActivity( finalIntent );

// BarcodeReaderActivity can be finished now
finish();