在我的情况下,我有一个活动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>
答案 0 :(得分:2)
根据我对Android框架的了解,只有在使用startActivityForResult()方法启动活动并且相应的活动调用了setResult时,才会调用OnActivityResult方法。
Android官方文档Android TaskStackBuilder:
用于构建跨任务导航的合成后栈的实用程序类
所以我认为你不能对框架说回到使用该回调的活动。
相反,你可以做的是在Intent中添加一些额外内容,然后当你回到后面的堆栈(到活动A)时,检查初始方法(onCreate或onResume)内部的附加信息或参数只能在那里如果是从最后一次活动(活动B)出来的话