2015-11-02 44 views
2

喜队我在通知堆栈中面临的一个问题Android的通知导航堆栈中

说,我有4个活动A1,A2,A3,A4

我有一个通知,这是意图A2,假设想象我们在A4通过A1 - > A2 - > A3 - > A4,现在即时消息接收通知,同时点击通知我打算A3,当我在这种情况下按回我的导航堆栈被清除,应用程序正在关闭。

但是,在这种情况下我的预期的行为是应该到A4和A3,A2,A1的后盾按钮按下

代码

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context); 
    mBuilder.setSmallIcon(R.mipmap.ic_launcher); 
    mBuilder.setContentTitle("Notification Alert, Click Me!"); 
    mBuilder.setContentText("Hi, This is Android Notification Detail!"); 
    Intent resultIntent = new Intent(context, SecondActivity.class); 
    resultIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
    TaskStackBuilder stackBuilder = TaskStackBuilder.create(context); 
    stackBuilder.addParentStack(FirstActivity.class); 

// Adds the Intent that starts the Activity to the top of the stack 
    stackBuilder.addNextIntent(resultIntent); 
    PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); 
    //PendingIntent resultPendingIntent = PendingIntent.getActivity(context,0,resultIntent,PendingIntent.FLAG_UPDATE_CURRENT); 
    mBuilder.setContentIntent(resultPendingIntent); 

    NotificationManager mNotificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE); 

// notificationID allows you to update the notification later on. 
     mNotificationManager.notify(14, mBuilder.build()); 

清单文件

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme.NoActionBar" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".FirstActivity" > 
    </activity> 
    <activity 
     android:name=".SecondActivity" 
     android:label="@string/title_activity_second" 
     android:parentActivityName=".FirstActivity" 
     android:theme="@style/AppTheme.NoActionBar" > 
    </activity> 
    <activity 
     android:name=".ThirdActivity" 
     android:label="@string/title_activity_third" 
     android:theme="@style/AppTheme.NoActionBar" > 
    </activity> 
</application> 
+0

我们展示您的通知创造的代码和你的AndroidManifest.xml –

回答

0

你正在使用addParentStack()的错误参数。您应该将通知中打开的活动看作参数,而不是父级。因此,请将您的代码更改为:

stackBuilder.addParentStack(SecondActivity.class); 

如果您的通知是A2,它将始终打开A2,从不打开A3。

android:parentActivityName在API级别16介绍如果你是一个较旧的手机上运行这一点,你必须定义为元数据以及父活动:

<activity 
     android:name=".SecondActivity" 
     android:label="@string/title_activity_second" 
     android:parentActivityName=".FirstActivity" 
     android:theme="@style/AppTheme.NoActionBar" > 
<meta-data 
     android:name="android.support.PARENT_ACTIVITY" 
     android:value=".FirstActivity" /> 
</activity>