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.Builder
dalam onCreateDialog
metode dan jadi tidak membuat penggunaan onCreateView
metode seperti ditunjukkan pada jawaban yang saya terhubung. Dan ketika saya memberi contoh, AlertDialog.Builder
saya meneruskan dalam konteks menggunakan getActivity()
ketika saya seharusnya menggunakan yang dipakai ConstextThemeWrapper
sebagai 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.Builder
yang 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.Builder
periksa konteks yang diteruskan ke pembuat. Semoga ini membantu! :)