如何使用DialogFragment(kotlin)

如何使用DialogFragment(kotlin)

情境

DialogFragment 很適合拿來呈現一個滿版獨立頁面,如果你想要做出一個小型的對話框,那麼就可以透過 AlertDialog 來顯示,如果你想要使用進度條顯示,就可以透過 ProgressDialog 來處理,不過 ProgressDialog
目前被官方棄用,因此,可以透過 ProgressBar 做在 DialogFragment 來達成這個目的。

DialogFragment 官網宣布棄用 android.app.DialogFragment 這個類別,建議我們使用 Support Library 的 DialogFragment

完整程式碼

如果需要完整的程式碼,可以到 GitHub 上觀看或者下載。

程式碼說明

我們的畫面只有一個按鈕,但按下按鈕則觸發開啟 DialogFragment 的事件。

show_dialog.setOnClickListener {  
	supportFragmentManager.let {  
		BasicDialogFragment().show(it, "")  
    }  
}

接著來看一下我們的 DialogFragment 怎麼處理的?

class BasicDialogFragment : DialogFragment() {    
    override fun onCreateView(  
        inflater: LayoutInflater,  
  container: ViewGroup?,  
  savedInstanceState: Bundle?  
    ): View? {  
        return LayoutInflater.from(context).inflate(R.layout.dialog_content, container, false)  
    }  
}

只需要將相對應的 view 設定給 onCreateView 就可以顯示出

看一下圖片,怎麼會沒有蓋住所有的畫面?

沒關係我們來設定一下參數,新增一個 onCreate 來設定一下 style 就可以了。

override fun onCreate(savedInstanceState: Bundle?) {  
    super.onCreate(savedInstanceState)  
    setStyle(STYLE_NORMAL, android.R.style.Theme_Light_NoTitleBar_Fullscreen)  
}

這樣就可以看到全版面的 DialogFragment 了,這樣就是一個簡單的 DialogFragment 範例。