使用TaskStackBuilder和startActivityForResult

7

在我的情况下,我有一个名为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>

你找到一种完美的方法来做这件事了吗?我有完全相同的情况。 - Cyph3rCod3r
完全不是!只是绕过解决方法,但这不是一项容易的任务。抱歉! - Alberto
1个回答

3
据我所知,关于Android框架,OnActivityResult方法只有在使用startActivityForResult()方法启动一个活动且相应的活动已经调用了setResult方法时才会被调用。
Android官方文档Android TaskStackBuilder
构建合成返回栈以进行跨任务导航的实用程序类。
因此,我认为你不能通过该回调要求框架返回到该活动。
相反,您可以在Intent中放置一些额外信息,然后当您回到后退堆栈(到A活动)时,在初始方法(onCreate或onResume)中检查只有在从最后一个活动(B活动)返回的情况下才会出现的额外信息或参数。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接