Ich habe Dialog Fragment. Ich habe vor, dieses Fragment in Aktivität und Dialog zu verwenden. Und ich überschreibe OnCreateDialog und OnCreateView-Methode. hier ist Codierung.AndroidRuntimeException: requestFeature() muss vor dem Hinzufügen von Inhalt aufgerufen werden
@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();
}
Ich verwende dieses Fragment in der Aktivitätsklasse so.
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();
Ich nenne es von einer anderen Aktivität so.
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");
}
Ich habe zwei Bedingungen. Wenn die Bildschirmgröße normal ist, ruft sie Aktivität auf, die den Fragmentdialog enthält. Andernfalls rufen Sie den Popup-Dialog auf. Ich habe die Ausnahme, wenn es den Popup-Dialog aufruft. Es sagte requestFeature() must be called before adding content
. Kann ich so verwenden? Ich würde gerne wissen, wie ich das überwinden kann.
Danke.
sollten Sie zuerst requestFeature vor dem setcontentView() aufgerufen werden –
Ob Ihr Problem gelöst ?? – Subburaj
Wahrscheinlich 'setup()' ruft 'requestFeature()' auf - Sie rufen 'setup() 'sowohl in' onCreateView() 'als auch' onCreateDialog() 'auf. (Ich weiß, alte Frage kam aber in Überprüfung Warteschlangen.) – laalto