Tôi cũng đã cố gắng để hộp thoại phân đoạn của mình hiển thị với chủ đề khác với hoạt động của nó và theo giải pháp này . Giống như một số người được đề cập trong các bình luận, tôi đã không làm cho nó hoạt động và hộp thoại tiếp tục hiển thị với chủ đề được chỉ định trong tệp kê khai. Vấn đề bật ra được rằng tôi đã xây dựng thoại sử dụng AlertDialog.Builder
trong onCreateDialog
phương pháp và do đó đã không được tận dụng các onCreateView
phương pháp như trong các câu trả lời mà tôi liên kết với. Và khi tôi đang khởi tạo thì AlertDialog.Builder
tôi đã chuyển qua ngữ cảnh getActivity()
khi tôi nên sử dụng tính năng khởi tạo ConstextThemeWrapper
thay thế.
Đây là mã cho onCreateDialog của tôi:
@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;
}
Ban đầu tôi đã AlertDialog.Builder
được khởi tạo như sau:
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
mà tôi đã đổi thành:
AlertDialog.Builder builder = new AlertDialog.Builder(contextThemeWrapper);
Sau khi thay đổi, hộp thoại đoạn được hiển thị với chủ đề chính xác. Vì vậy, nếu bất cứ ai khác đang gặp vấn đề tương tự và đang sử dụng AlertDialog.Builder
thì hãy kiểm tra bối cảnh được chuyển đến trình xây dựng. Hi vọng điêu nay co ich! :)