Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将类对象传递给活动_Android_Android Intent_Android Fragments_Android Activity - Fatal编程技术网

Android 如何将类对象传递给活动

Android 如何将类对象传递给活动,android,android-intent,android-fragments,android-activity,Android,Android Intent,Android Fragments,Android Activity,我有一个BarcodeReaderActivity我将在几个活动中开始,在我开始这个活动之前,我想为这个BarcodeReaderActivity传递一个destination活动类,所以在阅读二维码之后,我想让它以意图打开destination活动 我的第一个解决方案是将目标类名称作为字符串传递,并在BarcodeReaderActivity中使用开关大小写,然后为该类编写特定的Intent 我还尝试先将条形码阅读器创建为片段,但当我启动目标活动,然后删除片段时,它会在短时间内显示以前的活动,

我有一个
BarcodeReaderActivity
我将在几个活动中开始,在我开始这个
活动之前,我想为这个
BarcodeReaderActivity
传递一个destination
活动
类,所以在阅读二维码之后,我想让它以
意图打开destination
活动

我的第一个解决方案是将目标类名称作为字符串传递,并在
BarcodeReaderActivity
中使用开关大小写,然后为该类编写特定的
Intent

我还尝试先将
条形码阅读器
创建为
片段
,但当我启动目标
活动
,然后删除
片段
时,它会在短时间内显示以前的
活动
,但我不希望发生这种情况


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

您可以在Android活动之间传递对象。最好的方法是从Android SDK实现接口。之后,您可以使用
putExtra(“parcelName”,object)
方法将对象添加到负责启动新活动的意图中。要在其他活动中读取Parcelable对象,您可以使用以下代码片段:

getIntent().getExtras().getParcelable(“parcelName”)

我在这里找到了一个很好的例子来表达这个想法:


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

您可以构建所需的
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();