1

我正在接收通知,我想創建一個自定義備用堆棧,以便用戶可以在其中進行導航。但是,現在單擊該通知可打開所需的活動,但當我按下後按鈕它完全退出應用程序。無法爲活動創建備用堆棧

Intent resultIntent = new Intent(this, NotifViewActivity.class); 
    resultIntent.putExtra(StringHolder.NOTIFICATION_ID, notif.getId()); 

    TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); 
    stackBuilder.addParentStack(HomeActivity.class); 
    stackBuilder.addParentStack(NotifActivity.class); 
    stackBuilder.addNextIntent(resultIntent); 
    PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); 

    NotificationCompat.Builder notificationCompat = new NotificationCompat.Builder(context) 
      .setAutoCancel(true) 
      .setContentTitle(notif.getTitle()) 
      .setSmallIcon(R.drawable.ic_launcher) 
      .setContentIntent(resultPendingIntent); 

清單文件

<activity 
     android:name=".NotifActivity" 
     android:parentActivityName=".HomeActivity"> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value=".HomeActivity" /> 
    </activity> 
    <activity 
     android:name=".NotifViewActivity" 
     android:parentActivityName=".NotifActivity"> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value=".NotifActivity" /> 
    </activity> 

我希望它的工作方式是,在用戶被引導到 NotifViewActivity然後通知點擊按下,用戶被引導到時後退按鈕NotifActivity當再次按下返回按鈕時,用戶被帶到 主頁活動。這就是我試圖創建的層次結構,我該怎麼做?

回答

4

你應該建立自己的任務堆棧方式:

stackBuilder.addParentStack(HomeActivity.class); 
    stackBuilder.addParentStack(NotifActivity.class); 
    stackBuilder.addNextIntentWithParentStack(resultIntent); 

或實際,因爲你已經在清單中指定的活動層次,你可以只用一行做到這一點:

stackBuilder.addNextIntentWithParentStack(resultIntent); 

或者另一種方式歸檔相同的而不指定清單中的層次結構

Intent mainActivityIntent = new Intent(this, HomeActivity.class); 
    Intent notifActivityIntent = new Intent(this, NotifActivity.class); 
    stackBuilder.addNextIntent(mainActivityIntent); 
    stackBuilder.addNextIntent(notifActivityIntent); 
    stackBuilder.addNextIntent(resultIntent); 
+0

這工作perfectly.Thank你 –

+0

歡迎您 – Divers

+0

奇怪的是我的是完全一樣,但沒有工作,直到我卸載該應用程序並重新安裝它! (在模擬器上) – Bakhshi

-2

試試這個: 把下面的代碼到NotifViewActivity

@Override 
     public void onBackPressed() { 
      Intent i = new Intent(this, HomeActivity.class); 
     i.putExtra("exit", true); 
     i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivity(i); 
     super.onBackPressed(); 
     } 
+0

'i.putExtra(「exit」,true);''和'i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);'? – Divers

+0

https://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP –

+0

而且?它如何應用於當前作者的問題?它將如何加入回棧'HomeAcitivty'?實際上它只會在通過點擊通知打開靈敏度的情況下工作嗎?如何在extras中添加'exit-true'可以提供幫助? – Divers