Saya juga mencoba menampilkan dialog fragmen dengan tema yang berbeda dengan aktivitasnya, dan mengikuti solusi ini . Seperti beberapa orang yang disebutkan dalam komentar, saya tidak membuatnya berfungsi dan dialog terus ditampilkan dengan tema yang ditentukan dalam manifes. Masalahnya ternyata bahwa saya membangun dialog menggunakan AlertDialog.Builderdalam onCreateDialogmetode dan jadi tidak membuat penggunaan onCreateViewmetode seperti ditunjukkan pada jawaban yang saya terhubung. Dan ketika saya memberi contoh, AlertDialog.Buildersaya meneruskan dalam konteks menggunakan getActivity()ketika saya seharusnya menggunakan yang dipakai ConstextThemeWrappersebagai gantinya.
Ini kode untuk onCreateDialog saya:
@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;
}
Saya awalnya memiliki AlertDialog.Builderyang dipakai sebagai berikut:
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
yang saya ubah menjadi:
AlertDialog.Builder builder = new AlertDialog.Builder(contextThemeWrapper);
Setelah perubahan ini, dialog fragmen ditampilkan dengan tema yang benar. Jadi, jika ada orang lain yang mengalami masalah serupa dan memanfaatkannya, AlertDialog.Builderperiksa konteks yang diteruskan ke pembuat. Semoga ini membantu! :)