如何将片段显示为对话框?

时间:2013-05-29 11:32:06

标签: android android-fragments

我开发了一个应用程序,我希望将Fragment显示为对话框,

我在我的应用程序中使用了Tabs和Fragment,我只有一个活动,我根据需要替换了片段,

如果我们使用了活动,那么我们在Manifest文件中声明“android:theme =”@ android:style / Theme.Dialog“以显示活动作为对话框,我想为Fragment做同样的事情

4 个答案:

答案 0 :(得分:5)

我们可以使用两种方式将片段显示为对话框,但只需一种方式。

说明:

方式:

扩展类DialogFragment并覆盖以下两种方法中的任何一种:

onCreateView()OR

onCreateDialog()。

<强>不同这两者之间:

覆盖 onCreateView ()会让您显示片段为对话框,您可以自定义标题文字。

另一方面,重写 onCreateDialog (),您可以再次将片段显示为对话框,在这里您可以自定义整个对话框片段。意思是,你可以膨胀任何视图以显示为对话框。

如果您需要任何解释上述文字的源代码,请与我们联系。

注意:

使用DialogFragment有一个缺点。它不处理屏幕方向。并崩溃了应用程序。

因此,您需要在DialogFragment类的onCreate()中使用setRetainInstance()。

答案 1 :(得分: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

答案 2 :(得分:-1)

您的片段类应该扩展DialogFragment而不是片段。

查看文档:{​​{3}}

答案 3 :(得分:-1)

只需使用DialogFragment即可。它是此用途的预期片段子类。 http://developer.android.com/reference/android/app/DialogFragment.html