Ho frammento di finestra di dialogo. Ho intenzione di usare questo frammento nell'attività e nel dialogo. E sovrascrivo il metodo onCreateDialog e onCreateView. qui è la codifica.AndroidRuntimeException: requestFeature() deve essere chiamato prima di aggiungere contenuto
@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();
}
Io uso questo frammento nella classe di attività come quella.
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();
Lo chiamo da un'altra attività del genere.
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");
}
Ho due condizioni. Quando la dimensione dello schermo è normale, chiama l'attività che include la finestra di dialogo dei frammenti. Altrimenti chiama la finestra di dialogo popup. Ho ottenuto l'eccezione quando chiama la finestra di dialogo popup. Diceva requestFeature() must be called before adding content
. Posso usare così? Mi piacerebbe sapere come superare questo.
Grazie.
dovresti chiamarlo prima richiestaFunzione prima di setcontentView() –
Se il problema è risolto ?? – Subburaj
Probabilmente 'setup()' chiama 'requestFeature()' - si chiama 'setup()' in entrambi in 'onCreateView()' e 'onCreateDialog()'. (Lo so, vecchia domanda, ma è arrivato nelle code di revisione.) – laalto