2012-06-09 27 views
4

在我的活動中,兩個DialogFragments已打開。Android:活動恢復後DialogFragments的順序發生變化

Dialog1然後Dialog1上面的Dialog1(兩個可以看出,一個重疊另一個)。

我打開一些其他活動,當我回到我原來的活動,通過任務管理器,該對話框的命令具有changed..i.e。我現在通過Dialog2看到Dialog1。

當我從TaskManager恢復活動時,如何維護DialogFragments的順序?

+0

我在預蜂窩設備上也遇到了這個問題,但是當我旋轉設備時(我不想用configChanges作弊),它顛倒了順序。 我會把它放在我不嚴格按照DialogFragment newInstance的方式。在製作一個新項目並嚴格通過setArguments(Bundle)將所有內容傳遞之後,它似乎就起作用了! 現在我只需要將這些更改回溯到我現有的項目,但我仍然收到錯誤。 – albnok

回答

1

我對DialogFragments的排序有類似的問題。在我的情況下,我有一個對話框來設置一個時間段,因此它還必須啓動另一個對話框來選擇日期。因此,在顯示第二個對話框並更改屏幕方向後,兩個對話框的順序顛倒過來,類似於您的問題。

所以,我的解決方案是創建一個看起來像對話框的FragmentActivity。我用第一個對話框取代了它。這樣,我可以更好地管理在Activity的生命週期中保存實例狀態和類似的東西。這個活動像往常一樣調用第二個對話框,而不需要攜帶其他東西。

我的其他的活動,但實際上調用了前(第一)對話框不得不然後就打電話給新的活動的結果,就是這樣!

這裏更詳細,如何使活動看起來像一個對話框:

class MyDialogActivity extends FragmentActivity { 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.my_dialog_layout); 

    LayoutParams params = getWindow().getAttributes(); 
    params.height = LayoutParams.WRAP_CONTENT; 
    params.width = LayoutParams.WRAP_CONTENT; 
    getWindow().setAttributes((android.view.WindowManager.LayoutParams) params); 

    setTitle("my dialogs title"); 
    setTheme(DialogFragment.STYLE_NORMAL); 
    // ... 
} 

我希望,它會幫助你,或者至少給你一個想法爲那個醜陋的Android的錯誤解決方法!問候。

0

我有類似的麻煩。 我創建了DialogFragment的第一個實體。 然後我創建了第一個。 當我旋轉手機時出現問題。在這種情況下,第一個DialogFragment在第二個位置重新定位。

看來問題是我在相同的地方創建了第一個DialogFragment(方法),我忽略了另一個DialogFragment。

我做了排序:當我 「anotherDialogFragment.dismiss()」, 「FirstDialogFragment.newInstance()」 之前放置

FirstDialogFragment a=FirstDialogFragment.newInstance(...); 
a.show(getSupportFragmentManager(),""); 
anotherDialogFragment.dismiss(); 
    ..... 
// then somewhere in another method 
SecondDialogFragment b=SecondDialogFragment.newInstance(...); 
b.show(getSupportFragmentManager(),""); 

的問題得到了解決。