Тема не применяется к DialogFragment на Android

Я переключаю свои старые диалоги на DialogFragment, но темы и стили, похоже, не работают.

Я использую DialogFragment из библиотеки совместимости v4 и в методе onCreate я пробовал вызывать setStyle(style, theme); с множеством разных тем, но диалог всегда отображается как «старый» диалог в эмуляторе под управлением Android 4.0.3 (т. Е. Он не отображается в теме Holo).

Есть ли что-нибудь еще, что я должен делать? Отключает ли использование библиотеки совместимости тему 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();
    }
43
задан LuTHieR 17 May 2012 в 11:23
поделиться