我正在使用此代码在从小部件打开应用程序时设置回堆栈导航。
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。
我做错了什么?
答案 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中没有提到更改。