带有 startActivityForResult 的 TaskStackBuilder
TaskStackBuilder with startActivityForResult
在我的例子中,我有一个 activity A 调用 activity B 使用 startActivityForResult.
ActivityB是returns数据到activityA的形式,这样数据就可以存入我的数据库了。
此外,我的应用程序启动了一个通知,在单击时启动 activity B,当我尝试从 activity B 返回到 activity A 时出现问题,因为方法 "onActivityResult" 永远不会被调用。我在创建 TaskStackBuilder:
时无法模拟 startActivityForResult()
Intent resultIntent = new Intent(this, activityB.class);
// This ensures that navigating backward from the Activity leads out of your application to the Home screen.
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
// Adds the back stack for the Intent (but not the Intent itself)
stackBuilder.addParentStack(activityB.class);
// Adds the Intent that starts the Activity to the top of the stack
stackBuilder.addNextIntent(resultIntent);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this)
.setContentIntent(resultPendingIntent);
最后,我在 manifest.xml 中为 activity B 添加了父 activity:
<activity
android:name=".activityB"
android:parentActivityName=".activityA"
android:windowSoftInputMode="stateHidden">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".activityA"/>
</activity>
据我对 Android 框架的了解,OnActivityResult 方法仅在 activity 已使用 startActivityForResult() 方法启动且相应的 activity 已启动时调用称为 setResult 之一。
Android官方文档Android TaskStackBuilder:
Utility class for constructing synthetic back stacks for cross-task navigation
所以我认为您不能告诉框架使用该回调返回 activity。
相反,你可以做的是在 Intent 中放置一些额外的内容,然后当你返回返回堆栈(到 activity A)时,检查初始方法(onCreate 或 onResume)中的额外内容或只有在来自最后一个 activity (activity B)
的情况下才会存在的参数
在我的例子中,我有一个 activity A 调用 activity B 使用 startActivityForResult.
ActivityB是returns数据到activityA的形式,这样数据就可以存入我的数据库了。
此外,我的应用程序启动了一个通知,在单击时启动 activity B,当我尝试从 activity B 返回到 activity A 时出现问题,因为方法 "onActivityResult" 永远不会被调用。我在创建 TaskStackBuilder:
时无法模拟 startActivityForResult()Intent resultIntent = new Intent(this, activityB.class);
// This ensures that navigating backward from the Activity leads out of your application to the Home screen.
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
// Adds the back stack for the Intent (but not the Intent itself)
stackBuilder.addParentStack(activityB.class);
// Adds the Intent that starts the Activity to the top of the stack
stackBuilder.addNextIntent(resultIntent);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this)
.setContentIntent(resultPendingIntent);
最后,我在 manifest.xml 中为 activity B 添加了父 activity:
<activity
android:name=".activityB"
android:parentActivityName=".activityA"
android:windowSoftInputMode="stateHidden">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".activityA"/>
</activity>
据我对 Android 框架的了解,OnActivityResult 方法仅在 activity 已使用 startActivityForResult() 方法启动且相应的 activity 已启动时调用称为 setResult 之一。
Android官方文档Android TaskStackBuilder:
Utility class for constructing synthetic back stacks for cross-task navigation
所以我认为您不能告诉框架使用该回调返回 activity。
相反,你可以做的是在 Intent 中放置一些额外的内容,然后当你返回返回堆栈(到 activity A)时,检查初始方法(onCreate 或 onResume)中的额外内容或只有在来自最后一个 activity (activity B)
的情况下才会存在的参数