AndroidRuntimeException:在添加内容之前必须调用requestFeature()

use*_*041 10 android android-fragments android-dialog android-dialogfragment

我有对话框片段.我打算在活动和对话中使用这个片段.我重写onCreateDialog和onCreateView方法.这是编码.

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.interval_time_popup, null);
        setup(view, false);
        return view;
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        View view = getActivity().getLayoutInflater().inflate(R.layout.interval_time_popup, null);

        builder.setTitle("Interval Time");
        builder.setView(view);
        setup(view, true);
        builder.setPositiveButton("Set", new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog, int which) {
                listener.setOnIntervalTime(hourNp.getValue(), minNp.getValue());
                dismiss();
            }
        });
        builder.setNegativeButton("Cancel", new OnClickListener() {

            public void onClick(DialogInterface dialog, int which) {
                dismiss();
            }
        });
        return builder.create();
    }
Run Code Online (Sandbox Code Playgroud)

我在活动类中使用这个片段.

           SelectTimeIntervalDialogFragment fragment = new SelectTimeIntervalDialogFragment();
            fragment.setHrMin(hr, min);
            Bundle args = new Bundle();

            FragmentTransaction t = getSupportFragmentManager().beginTransaction();
            t.replace(R.id.shift_period_interval_layout, fragment);
            t.commit();
Run Code Online (Sandbox Code Playgroud)

我从另一个类似的活动中称呼它.

            if((getResources().getConfiguration().screenLayout &
                            Configuration.SCREENLAYOUT_SIZE_NORMAL) ==
                            Configuration.SCREENLAYOUT_SIZE_NORMAL){
                        Intent intent = new Intent(ShiftPeriodActivity.this, SelectIntervalActivity.class);
                        intent.putExtra("intervalHr", speriod.intervalHr);
                        intent.putExtra("intervalMin", speriod.intervalMin);
                        startActivityForResult(intent, 1);
                    } else {
                        FragmentManager fm = getSupportFragmentManager();
                        intervalDialog = new SelectTimeIntervalDialogFragment();
                        intervalDialog.setHrMin(speriod.intervalHr, speriod.intervalMin);
                        intervalDialog.show(fm, "interval_fragment");
                    }
Run Code Online (Sandbox Code Playgroud)

我有两个条件.当屏幕大小正常时,它会调用包含片段对话框的活动.否则,它会调用弹出对话框.调用弹出对话框时我得到了异常.它说requestFeature() must be called before adding content.我可以这样用吗?我想知道如何克服这一点.

谢谢.

Jak*_*keP 18

看起来你的问题与我的问题完全一样 - 类似的代码和抛出的相同异常.

解决方案是做@laalto建议:同时使用它们中的任何一个onCreateView(),onCreateDialog()但不要同时使用它们.我知道异常似乎可能是由许多不同的事情引起的,但这对我的情况有帮助; 希望它将来会帮助别人:)


Avi*_*kaj -3

我认为你正在使用 requestWindowFeature(); 在创建时

在 setContentView(R.layout.activity); 之前使用它