2015-10-05 70 views
1

我有一些活動被設計成看起來和行爲像對話框(但由於小部件的限制,實際上不能成爲對話框)。這些活動使用Theme.Dialog主題的擴展名在屏幕上顯示爲彈出窗口而不填滿整個屏幕。對於較舊的API,是否有類似於FLAG_ACTIVITY_NEW_DOCUMENT的內容?

我的目標是他們會模仿對話框的外觀,使他們能夠在屏幕上顯示任何內容,屏幕上的所有內容仍然顯示在對話框後面。

在API 21中,我可以使用FLAG_ACTIVITY_NEW_DOCUMENT來實現此目的。但是,我的應用程序支持的API只有16個。我嘗試了其他兩個標誌,但除了NEW_DOCUMENT外,其他標誌都沒有給出正確的外觀。所有其他人最終打開我的實際應用程序背後的對話活動,然後把它打開,一旦我的活動完成()。不是一個破壞交易的人,但並不理想。

我能做些什麼來讓我的設計保持向後兼容的風格嗎?

回答

1

通過將ACTIVITY_CLEAR_TASK與NEW_TASK結合使用,我能夠非常接近。這確保了我的活動的任何現有任務都會關閉,並創建一個新任務,確保我的應用程序不會顯示在後臺。

不幸的是,這伴隨着消除我的用戶當前狀態的惱人的副作用,但考慮到我將使用這個小部件(他們已經在主屏幕上),我懷疑它會是那有影響力。

不過,我裹在構建版本檢查的意圖標誌設置,這樣至少5.0或以上版本的用戶不會受到煩擾:

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){ 
     pIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT); 
    } 
    else{ 
     pIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); 
    } 
相關問題