簡體   English   中英

Android DialogFragment解雇

[英]Android DialogFragment Dismissal

我已經看過與處理DialogFragment中的方向更改有關的幾個問題,並且共同的主題似乎是問者沒有得到任何答案,我什至沒有理解...

因此,我想采用另一種方法...有沒有辦法以編程方式關閉對話框...查看我的LogCat,我可以看到,如果對話框片段處於活動狀態,並且屏幕方向已更改,則我的活動重新開始。

在此過程中,DialogFragment也重新啟動,但這發生在onCreate之后和onResume之前(據我所知)。 對我來說,在對話框中檢測到它很簡單,在這種情況下,我想做的就是中止對話框視圖的創建。 到目前為止,我嘗試過的是這樣的:

    if (normal_conditions_detected)
    {
        View v = inflater.inflate (R.layout.dialog_layout, container, false);
        final Dialog d = getDialog();
        d.setTitle (R.string.sensor_config);

        ... more stuff
        return v
    }
    else
    {
        getDialog().cancel();
        return null;
    }

這確實避免了我得到的空指針的廢話,但是現在我得到了只能描述為空對話框的內容,即使其中有cancel()命令也是如此。 有沒有辦法讓我的dialogFragment代碼拒絕創建視圖?

旋轉設備時,活動將執行

onSaveInstanceState 

方法並保存當前狀態,這意味着它也會在重新創建后保存您的片段狀態

onCreate(Bundle savedInstanceState)

再次使用方法,savedInstanceState保存您的舊數據,在這里您可以進行如下操作

if (savedInstanceState == null){
   YourDialogFragment f = new YourDialogFragment()
   f.show // etc
}

僅創建片段之后,您無需通過將控件放入片段中,而可以通過活動來對其進行控制

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM