我有对话框片段。我打算在活动和对话中使用这个片段。我重写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();
}
我在活动类中使用这个片段。
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();
我从其他类似的活动中称呼它。
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");
}
我有两个条件。当屏幕大小正常时,它会调用包含片段对话框的活动。否则,它会调用弹出对话框。调用弹出对话框时我得到了异常。它说requestFeature() must be called before adding content
。我可以这样用吗?我想知道如何克服这一点。
感谢。
答案 0 :(得分:18)
看起来你的问题与我的问题完全一样 - 类似的代码和抛出的同样异常。
解决方案是执行@laalto建议:使用onCreateView()
或onCreateDialog()
但不能同时使用它们。我知道异常似乎可能是由许多不同的事情引起的,但这对我的情况有帮助;希望将来能帮助别人:)
答案 1 :(得分:-3)
我认为你正在使用requestWindowFeature();在创建
在setContentView(R.layout.activity);
之前使用它