Eu também estava tentando fazer com que meu diálogo de fragmento fosse exibido com um tema diferente para sua atividade e segui esta solução . Como algumas pessoas mencionadas nos comentários, eu não estava fazendo funcionar e o diálogo continuava aparecendo com o tema especificado no manifesto. O problema acabou sendo que eu estava construindo o diálogo usando AlertDialog.Builder
o onCreateDialog
método e, portanto, não estava fazendo uso do onCreateView
método como mostrado na resposta que vinculei. E quando estava instanciando o AlertDialog.Builder
, estava passando no contexto usando getActivity()
quando deveria estar usando o instanciado ConstextThemeWrapper
.
Aqui está o código para meu onCreateDialog:
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Create ContextThemeWrapper from the original Activity Context
ContextThemeWrapper contextThemeWrapper = new ContextThemeWrapper(getActivity(), android.R.style.Theme_DeviceDefault_Light_Dialog);
LayoutInflater inflater = getActivity().getLayoutInflater().cloneInContext(contextThemeWrapper);
// Now take note of the parameter passed into AlertDialog.Builder constructor
AlertDialog.Builder builder = new AlertDialog.Builder(contextThemeWrapper);
View view = inflater.inflate(R.layout.set_server_dialog, null);
mEditText = (EditText) view.findViewById(R.id.txt_server);
mEditText.requestFocus(); // Show soft keyboard automatically
mEditText.setOnEditorActionListener(this);
builder.setView(view);
builder.setTitle(R.string.server_dialog);
builder.setPositiveButton(android.R.string.ok, this);
Dialog dialog = builder.create();
dialog.setCanceledOnTouchOutside(false);
return dialog;
}
Eu originalmente tive o AlertDialog.Builder
ser instanciado da seguinte maneira:
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
que mudei para:
AlertDialog.Builder builder = new AlertDialog.Builder(contextThemeWrapper);
Após esta alteração, a caixa de diálogo do fragmento foi exibida com o tema correto. Portanto, se alguém mais está tendo um problema semelhante e está fazendo uso do AlertDialog.Builder
, verifique o contexto que está sendo passado para o construtor. Espero que isto ajude! :)