Ayrıca, parça diyaloğumu etkinliğinden farklı bir temayla göstermeye çalışıyordum ve bu çözümü takip ettim . Yorumlarda bahsedilen bazı kişiler gibi, onu çalıştırmıyordum ve diyalog manifestte belirtilen temayla gösterilmeye devam etti. Sorun şu ki AlertDialog.Builder
, onCreateDialog
yöntemi kullanarak diyaloğu oluşturuyordum ve bu nedenle onCreateView
bağlantılı olduğum cevapta gösterilen yöntemi kullanmıyordum . Ve ben somutlaştırırken bunun yerine somutlaştırılmış olanı kullanmam gerekirken AlertDialog.Builder
bağlamda geçiyordum .getActivity()
ConstextThemeWrapper
İşte onCreateDialog'umun kodu:
@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;
}
Başlangıçta AlertDialog.Builder
varlığı şu şekilde somutlaştırdım:
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
ben değiştirdim:
AlertDialog.Builder builder = new AlertDialog.Builder(contextThemeWrapper);
Bu değişiklikten sonra parça iletişim kutusu doğru temayla gösterildi. Öyleyse, başka biri benzer bir problem yaşıyorsa ve bunu kullanıyorsa, AlertDialog.Builder
kurucuya aktarılan içeriği kontrol edin. Bu yardımcı olur umarım! :)