2013-05-29 35 views
4

我已經開發的應用程序中,我要顯示片段作爲一個對話框,如何將片段顯示爲對話框?

我用標籤和片段在我的申請,我只有一個活動,我更換片段,因爲我需要,

如果我們使用的活動,然後我們在清單文件中聲明「android:theme =」@ android:style/Theme.Dialog「以顯示活動對話框,我想爲片段做同樣的事情

+0

http://developer.android.com/guide/topics/ui/dialogs.html#CustomLayout使用DialogFragment。 – kelunik

+0

http://developer.android.com/reference/android/app/DialogFragment。html – pskink

回答

0

這是我使用的加載對話框:

import android.app.Dialog; 
import android.app.DialogFragment; 
import android.app.ProgressDialog; 
import android.os.Bundle; 

public class LoadingDialogFragment extends DialogFragment { 

    private final String message; 

    private LoadingDialogFragment(String message) { 
     this.message = message; 
    } 

    public static LoadingDialogFragment newInstance(String message) { 
     LoadingDialogFragment fragment = new LoadingDialogFragment(message); 
     return fragment; 
    } 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     final ProgressDialog dialog = new ProgressDialog(getActivity()); 
     dialog.setMessage(message); 
     dialog.setIndeterminate(true); 
     dialog.setCancelable(true); 
     return dialog; 
    } 

} 

可以被實例化這樣的:

LoadingDialogFragment.newInstance(context.getString(R.string.loading_message)) 

可以膨脹的觀點如果您想要自定義佈局,請從此對話框中選擇setContentView。 http://developer.android.com/guide/topics/ui/dialogs.html#CustomLayout

+0

我用DialogFragment,但它仍然顯示爲前端,不像對話框,你能給我一個鏈接樣本演示 – Jayesh

+0

你如何顯示一個dialogfragment? – pskink

+0

這是我如何顯示從上面的片段:LoadingDialogFragment.newInstance(context.getString(R.string.loading_message))。show(getFragmentManager(),「searchingDialog」); – span

1

我們可以使用兩種方法將一個片段顯示爲對話框,但使用一種方法。

說明:

方式:

擴展類DialogFragment和覆蓋兩種方法的任何一種:

onCreateView()OR

onCreateDialog()。

差異。這兩者之間:

重寫onCreateView()將讓你展現一個片段對話框,你可以在標題文本定製。

另一方面,覆蓋onCreateDialog(),您可以再次顯示一個片段作爲對話框,在這裏您可以自定義整個對話框片段。意思是,你可以誇大任何視圖來顯示對話框。

如果您需要解釋上述文本的任何源代碼,請告訴我。

注:

使用DialogFragment有一個缺點。它不處理屏幕方向。並崩潰的應用程序。

因此,您需要在DialogFragment類的onCreate()內部使用setRetainInstance()。

+0

我不同意你關於方位變化的說明。我多次使用過DialogFragment,並且在改變方向時工作正常。顯然,當你改變方向時,它將被重新創建,就像所有的片段一樣。 –