Я переключаю свои старые Dialogs на DialogFragment, но темы и стили не работают.
Я использую DialogFragment из библиотеки совместимости v4, а в методе onCreate, который я пробовал, вызывается setStyle (стиль, тема); с большим количеством разных тем, но диалог всегда отображается как "старый" диалог в эмуляторе под управлением Android 4.0.3 (т.е. он не отображается в теме Голо).
Есть ли что-нибудь еще, что я должен делать? Использует ли библиотека совместимости тему Holo или что-то еще? Если это так, следует ли создать два диалоговых окна DialogFragments, один для более старых версий и один для более новых версий?
Спасибо!
Здесь (упрощенный) код для моего диалога. Я пробовал как Theme_Holo_Dialog_NoActionBar, так и Theme_DeviceDefault_Dialog_NoActionBar, но эмулятор Android 4 всегда показывает диалог как "старый" диалог вместо использования темы Holo. Что я делаю не так?:(
[...]
import android.support.v4.app.DialogFragment;
[...]
public class AlertDialogFragment extends DialogFragment {
public static AlertDialogFragment newInstance(int id) {
AlertDialogFragment f = new AlertDialogFragment();
Bundle args = new Bundle();
args.putInt("id", id);
f.setArguments(args);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int style = DialogFragment.STYLE_NORMAL, theme = 0;
theme = android.R.style.Theme_Holo_Dialog_NoActionBar;
setStyle(style, theme);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
mId = getArguments().getInt("id");
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
.setTitle(mTitle)
.setMessage(mMessage)
.setPositiveButton(getString(R.string.btn_ok), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dismiss();
}
});
return builder.create();
}