将对话框转换为DialogFragments

时间:2013-01-27 16:52:09

标签: android dialog android-dialogfragment

我有一个非常好的对话框,可以满足我的需求。但我需要将其更新为新标准。

这是我当前的对话框:

public class MyProgressDialog extends Dialog {

    private MyProgressDialog dialog;

    public MyProgressDialog(Context context) {
        super(context);
    }

    public MyProgressDialog show(Context context) {
        dialog = new MyProgressDialog(context);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setContentView(R.layout.progress);
        dialog.getWindow().setBackgroundDrawableResource(
                android.R.color.transparent);
        dialog.setCanceledOnTouchOutside(false);
        dialog.show();
        return dialog;
    }

    public void dismiss(Context context) {

        dialog.dismiss();

    }

}

我已将此非片段对话框与Fragments和ListFragments(使用支持库4)一起用作ProgressDialogs。不幸的是,在具有多个片段的页面上,它们只是叠加在一起。所以我想将每个对话框与每个片段相关联。

我在每个onPreExecute()的{​​{1}}中以这种方式调用对话框:

Task

是否可以根据需要调整当前设置,或者我是否需要从头开始完全重做?我查看了谷歌的所有样本,我发现甚至看不到我正在做的事情。我可以在这个转变中获得一些指导吗?无论是链接,代码示例还是研究想法?

编辑以回应以下评论:

dialog = new MyProgressDialog(getActivity());

平板电脑布局:

@Override
public Fragment getItem(int position) {
    Fragment f = null;
    switch (position) {
    case 0: {
        f = new RateFragment();
        Bundle args = new Bundle();
        f.setArguments(args);
        break;
    }
    case 1: {
        f = new ReviewFragment();
        Bundle args = new Bundle();

        f.setArguments(args);
        break;
    }
    default:
        throw new IllegalArgumentException("not this many fragments: "
                + position);
    }

    return f;

}

1 个答案:

答案 0 :(得分:1)

  

所以我想将每个对话框与每个片段相关联。

如果要在触发工作的相应片段上方显示对话框,则无法使用DialogFragment,因为这会将对话框设置为普通对话框。

相反,您可以像使用自定义Fragment一样使用普通ProgressDialog 并将其附加到容器(应该是RelativeLayout或{{1在正常片段/内容之上。

  

是否可以根据需要调整当前设置,或者我可以   需要从头开始完全重做这个吗?

如果那些包含多个片段的页面将这些片段放在包装器布局中,那么它非常简单。如果不是,您将需要进行一些简单或非常难以进行的更改,具体取决于您构建当前布局的方式。