2013-04-29 16 views
0

我有一個從activity/fragment,MainActivity啓動的服務。從該服務的廣播填充列表。用戶可以單擊一個列表項並在細節活動/片段DetailActivity中查看項目詳細信息。該服務將生成一個或多個與列表中的項目相對應的通知,因爲它們已添加。操作來自服務的backstack

通過拉下通知並點擊其中一個通知,用戶可以直接進入細節活動/片段DetailsActivity。

我已經設置了清單以指示正確的父活動,並使用stackBuilder(As seen here)將pendingIntent添加到了堆棧中。

當從通知中啓動DetailsActivity,使用後退按鈕銷燬活動時,我最終返回到啓動器,而不是在MainActivity中,我想成爲。我哪裏錯了?

這是Android版本4.03

下面是在服務創建通知代碼:

Context ctx = getBaseContext(); 
Intent notificationIntent = new Intent(ctx, DetailsActivity.class); 
TaskStackBuilder stackBuilder = TaskStackBuilder.create(ctx); 
stackBuilder.addParentStack(MainActivity.class); 
stackBuilder.addNextIntent(notificationIntent); 
PendingIntent contentIntent = stackBuilder.getPendingIntent(uniquePendingIntentID, PendingIntent.FLAG_UPDATE_CURRENT); 

mNotificationMgr = (NotificationManager) ctx.getSystemService(Context.NOTIFICATION_SERVICE); 

NotificationCompat.Builder builder = new NotificationCompat.Builder(ctx); 
builder.setContentIntent(contentIntent) 
     .setSmallIcon(R.drawable.icon_small) 
     .setWhen(System.currentTimeMillis()) 
     .setAutoCancel(true) 
     .setContentTitle("New list item found") 
     .setContentText("Found a new list item: " + itemName) 
     .setPriority(Notification.FLAG_HIGH_PRIORITY); 
mNotificationMgr.notify(Integer.parseInt(deviceId), builder.build()); 

感興趣的清單項目有:

<activity 
    android:name="com.something.MainActivity" 
    android:icon="@drawable/icon_main" 
    android:label="@string/main_title" 
    android:launchMode="singleInstance"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 
<activity 
    android:name="com.something.DetailsActivity"> 
    <meta-data 
     android:name="android.support.PARENT_ACTIVITY" 
     android:value="com.something.MainActivity" /> 
</activity> 

回答

0

我已經經歷這是在各種Android平臺上的確切問題:4.1,4.2甚至4.4。奇怪的是,它似乎依賴於設備。例如,在搭載Android 4.4.2的Nexus 4上,它無法正常工作,但在搭載Android 4.4的Galaxy S4上,它工作正常!此外,在Cyanogenmod Android 4.3.1 Galaxy S2上,它工作。

+0

如果您發現任何解決方案,請分享。請注意你的答案,以便解決問題。 [本指南](http://stackoverflow.com/help/how-to-answer)可能會對您感興趣。 – 2014-03-21 12:35:35

0

實際上當你調用addParentStack(MainActivity.class)時,你需要將MainActivity的父類添加到堆棧中(因此沒有MainActivity沒有父類)。

你在找什麼addNextIntentWithParentStack(yourIntent)將你的父棧添加到堆棧,然後添加yourItent。