Tôi đang cố gắng sử dụng hộp thoại theo chủ đề vật chất mới với các đoạn trong AppCompat v22.1. According to Chris Banes, để làm điều này:DialogFragment với AppCompatDialog bị treo nếu STYLE_NO_TITLE được đặt
Chỉ cần trở
new AppCompatDialog(getActivity(), getTheme())
từonCreateDialog(Bundle)
.
Thiết này lên:
public class MyFragment extends DialogFragment
{
public MyFragment() { }
public Dialog onCreateDialog(Bundle savedInstanceState) {
return new AppCompatDialog(getActivity(), getTheme());
}
...
}
công trình một cách hoàn hảo trong trường hợp bình thường; hộp thoại chính xác theo chủ đề và mọi thứ. Tuy nhiên, khi chúng tôi cố gắng để hiển thị một hộp thoại với các STYLE_NO_TITLE
tùy chọn:
MyFragment fragment = new MyFragment();
fragment.setStyle(DialogFragment.STYLE_NO_TITLE, 0);
fragment.show(getSupportFragmentManager(), "DIALOG");
nó gây ra ngoại lệ sau đây và sụp đổ:
05-19 12:18:38.806 15458-15458/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.test.testdialog, PID: 15458
android.util.AndroidRuntimeException: requestFeature() must be called before adding content
at com.android.internal.policy.impl.PhoneWindow.requestFeature(PhoneWindow.java:302)
at android.app.Dialog.requestWindowFeature(Dialog.java:1066)
at android.support.v4.app.DialogFragment.getLayoutInflater(DialogFragment.java:317)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:955)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:740)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1501)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:458)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Tôi đoán các vấn đề có thể liên quan đến DialogFragment
gọi requestWindowFeature()
thay vì supportRequestWindowFeature()
(?)
Có giải pháp nào cho vấn đề này không?
liên quan đến điều này: https://code.google.com/p/android/issues/detail?id=170053? – Blackbelt
@Blackbelt Vâng, chắc chắn là như vậy, cảm ơn. – matiash
Bạn được chào đón – Blackbelt