Tôi có đoạn hội thoại. Tôi có ý định sử dụng đoạn này trong hoạt động và hộp thoại. Và tôi ghi đè lên phương thức onCreateDialog và onCreateView. đây là mã hóa.AndroidRuntimeException: requestFeature() phải được gọi trước khi thêm nội dung
@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();
}
Tôi sử dụng đoạn này trong lớp hoạt động như vậy.
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();
Tôi gọi nó từ một hoạt động khác như vậy.
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");
}
Tôi có hai điều kiện. Khi kích thước màn hình là bình thường, nó gọi hoạt động bao gồm hộp thoại phân đoạn. Nếu không, nó sẽ gọi hộp thoại bật lên. Tôi có ngoại lệ khi nó gọi hộp thoại bật lên. Nó nói requestFeature() must be called before adding content
. Tôi có thể sử dụng như thế này không? Tôi muốn biết cách vượt qua điều này.
Cảm ơn.
bạn nên được gọi là yêu cầu đầu tiênTính năng trước khi setcontentView() –
Cho dù vấn đề của bạn có được giải quyết không ?? – Subburaj
Có khả năng 'setup()' calls 'requestFeature()' - bạn gọi 'setup()' trong cả hai trong 'onCreateView()' và 'onCreateDialog()'. (Tôi biết, câu hỏi cũ nhưng đã đưa ra trong hàng đợi xem xét.) – laalto