我已經開發的應用程序中,我要顯示片段作爲一個對話框,如何將片段顯示爲對話框?
我用標籤和片段在我的申請,我只有一個活動,我更換片段,因爲我需要,
如果我們使用的活動,然後我們在清單文件中聲明「android:theme =」@ android:style/Theme.Dialog「以顯示活動對話框,我想爲片段做同樣的事情
我已經開發的應用程序中,我要顯示片段作爲一個對話框,如何將片段顯示爲對話框?
我用標籤和片段在我的申請,我只有一個活動,我更換片段,因爲我需要,
如果我們使用的活動,然後我們在清單文件中聲明「android:theme =」@ android:style/Theme.Dialog「以顯示活動對話框,我想爲片段做同樣的事情
您的片段類應擴展DialogFragment而不是片段。
檢出文檔:http://developer.android.com/reference/android/app/DialogFragment.html
只需使用DialogFragment。它是用於這種用途的目的片段子.. http://developer.android.com/reference/android/app/DialogFragment.html
這是我使用的加載對話框:
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
我們可以使用兩種方法將一個片段顯示爲對話框,但使用一種方法。
說明:
方式:
擴展類DialogFragment和覆蓋兩種方法的任何一種:
onCreateView()OR
onCreateDialog()。
差異。這兩者之間:
重寫onCreateView()將讓你展現一個片段對話框,你可以在標題文本定製。
另一方面,覆蓋onCreateDialog(),您可以再次顯示一個片段作爲對話框,在這裏您可以自定義整個對話框片段。意思是,你可以誇大任何視圖來顯示對話框。
如果您需要解釋上述文本的任何源代碼,請告訴我。
注:
使用DialogFragment有一個缺點。它不處理屏幕方向。並崩潰的應用程序。
因此,您需要在DialogFragment類的onCreate()內部使用setRetainInstance()。
我不同意你關於方位變化的說明。我多次使用過DialogFragment,並且在改變方向時工作正常。顯然,當你改變方向時,它將被重新創建,就像所有的片段一樣。 –
http://developer.android.com/guide/topics/ui/dialogs.html#CustomLayout使用DialogFragment。 – kelunik
http://developer.android.com/reference/android/app/DialogFragment。html – pskink