使用TaskStackBuilder.addParentStack的Android parentActivityName在API 21(Lollipop)上停止工作

时间:2014-12-11 11:05:30

标签: android

我正在使用此代码在从小部件打开应用程序时设置回堆栈导航。

Intent intent = new Intent(context, ComposeActivity.class);

// Create an Intent to launch ComposeActivity

intent.setFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);

TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);

// Adds the back stack
stackBuilder.addParentStack(ComposeActivity.class);

// Adds the Intent to the top of the stack
stackBuilder.addNextIntent(intent);

// Gets a PendingIntent containing the entire back stack
PendingIntent pendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);

// Get the layout for the App Widget and attach an on-click listener to the button

RemoteViews recordButtonImageView = new RemoteViews(
  context.getPackageName(), R.layout.record_widget
);

recordButtonImageView.setOnClickPendingIntent(
  R.id.record_button, pendingIntent
);

这是我的AndroidManifest.xml定义

<activity
            android:name=".activities.ComposeActivity"
            android:label="@string/compose_activity"
            android:parentActivityName=".activities.MyFeedActivity"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Holo.NoActionBar">

        <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value=".MyFeedActivity"/>

</activity>

它适用于API 14 - 20但不适用于API 21。

我做错了什么?

2 个答案:

答案 0 :(得分:7)

我遇到了同样的问题。当我在方法requestCode中更改getPendingIntent param时,问题就解决了。似乎requestCode必须大于0。 所以你可以改变

PendingIntent pendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);

PendingIntent pendingIntent = stackBuilder.getPendingIntent(1, PendingIntent.FLAG_UPDATE_CURRENT);

答案 1 :(得分:0)

我们最近遇到了同样的问题。

这似乎是com.android.support:support-v4:21.0.+中的错误。使用最近发布的版本22它再次工作,即使cangelog中没有提到更改。