我有一个BarcodeReaderActivity
,我将在几个活动中开始,在开始这个Activity
之前,我想为此{{}传递一个目标Activity
类1}}所以在阅读QR码后,我希望它用BarcodeReaderActivity
打开目的地Activity
。
我的第一个解决方案是将目标类名称作为字符串传递,并在Intent
中使用switch case并为该类编写特定的BarcodeReaderActivity
。
我还尝试先将Intent
创建为BarcodeReader
,然后当我启动目标Fragment
然后移除Activity
时,它会显示上一个Fragment
在很短的时间内但我不希望这种情况发生。
如果您了解更好的方法,我想向您提供一些建议。
答案 0 :(得分:1)
您可以在Android活动之间传递对象。最好的方法是从Android SDK实现Parcelable界面。之后,您可以将对象添加到负责使用putExtra("parcelName", object)
方法启动新活动的Intent。要在antoher活动中读取Parcelable对象,您可以使用此类代码段:
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库,它可以为你生成一些可重复的东西。
答案 1 :(得分:1)
您可以在Intent
之外构建必需的BarcodeReaderActivity
并将其作为额外传递。如果需要,您可以稍后在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();