带有startActivityForResult的TaskStackBuilder

时间:2016-08-22 08:53:23

标签: android taskstackbuilder

在我的情况下,我有一个活动A,它使用startActivityForResult调用活动B.

活动B是一个将数据返回给活动A的表单,因此数据可以存储在我的数据库中。

此外,我的应用程序启动通知,在点击时启动活动B,当我尝试从活动B返回到活动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中添加了活动B的父活动:

<activity
    android:name=".activityB"
    android:parentActivityName=".activityA"
    android:windowSoftInputMode="stateHidden">
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value=".activityA"/>
</activity>

1 个答案:

答案 0 :(得分:2)

根据我对Android框架的了解,只有在使用startActivityForResult()方法启动活动并且相应的活动调用了setResult时,才会调用OnActivityResult方法。

Android官方文档Android TaskStackBuilder

  

用于构建跨任务导航的合成后栈的实用程序类

所以我认为你不能对框架说回到使用该回调的活动。

相反,你可以做的是在Intent中添加一些额外内容,然后当你回到后面的堆栈(到活动A)时,检查初始方法(onCreate或onResume)内部的附加信息或参数只能在那里如果是从最后一次活动(活动B)出来的话