Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 更改AlertDialog标题分隔符颜色代码出现异常_Java_Android_Android Layout_Android Alertdialog - Fatal编程技术网

Java 更改AlertDialog标题分隔符颜色代码出现异常

Java 更改AlertDialog标题分隔符颜色代码出现异常,java,android,android-layout,android-alertdialog,Java,Android,Android Layout,Android Alertdialog,我需要更改AlertDialog标题下方分隔线的默认蓝色,如中所述 在搜索时,我找到了一些解决方法,但在尝试这段代码时,它给出了一个例外 这是我的密码: 下面是日志: 如果装饰视图不存在,调用getDecorView将创建该视图 在对话框上调用show调用requestFeature,如果已经创建了装饰视图,它将失败并出现此异常。通常,装饰视图是通过第一次调用setContentView创建的。因此,在例外情况中使用了措辞 代码看起来很粗糙,但是您可以在对话框显示后尝试移动涉及getDecorV

我需要更改AlertDialog标题下方分隔线的默认蓝色,如中所述

在搜索时,我找到了一些解决方法,但在尝试这段代码时,它给出了一个例外

这是我的密码:

下面是日志:

如果装饰视图不存在,调用getDecorView将创建该视图

在对话框上调用show调用requestFeature,如果已经创建了装饰视图,它将失败并出现此异常。通常,装饰视图是通过第一次调用setContentView创建的。因此,在例外情况中使用了措辞


代码看起来很粗糙,但是您可以在对话框显示后尝试移动涉及getDecorView的try-catch

你试过搜索你得到的异常吗?是的!问题是在哪里放置代码try{}catch。我没有找到任何关于完整代码的帖子。可能重复的请把你的异常的第一条消息读到最后,而且你通常不会捕获运行时异常,你可以处理它们。@CeilingGecko:我知道在添加内容之前必须调用**requestFeature**语句,但我的代码中没有setContentView,我使用的是AlertDialog.Builder,不知道在哪里发布我的try\u catch代码。如果您有任何链接在对话框中处理此问题,则此问题可以标记为重复。@username\u AB检查此答案以了解应用程序崩溃的原因
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setMessage("Hello World")
            .setTitle("Alert Dialog")
            .setIcon(android.R.drawable.ic_dialog_alert)
            .setCancelable(false)
            .setPositiveButton("Close",
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.dismiss();
                        }
                    }
            );
    AlertDialog dialog = builder.create();
    try {
        ((ViewGroup) ((ViewGroup) dialog.getWindow().getDecorView()).getChildAt(0))
                .getChildAt(1)
                .setBackgroundColor(getResources().getColor(R.color.app_orange));
    }catch (NullPointerException ex){
        Timber.e(ex.getStackTrace().toString());
    }
    dialog.show();
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.example/com.android.example.activities.HomeScreenActivity}: android.util.AndroidRuntimeException: requestFeature() must be called before adding content
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2305)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363)
        at android.app.ActivityThread.access$900(ActivityThread.java:161)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:157)
        at android.app.ActivityThread.main(ActivityThread.java:5356)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
        at dalvik.system.NativeStart.main(Native Method)
 Caused by: android.util.AndroidRuntimeException: requestFeature() must be called before adding content
        at com.android.internal.policy.impl.PhoneWindow.requestFeature(PhoneWindow.java:318)
        at com.android.internal.app.AlertController.installContent(AlertController.java:235)
        at android.app.AlertDialog.onCreate(AlertDialog.java:337)
        at android.app.Dialog.dispatchOnCreate(Dialog.java:363)
        at android.app.Dialog.show(Dialog.java:264)
        at com.android.example.fragments.HomeScreenFragment.onActivityCreated(HomeScreenFragment.java:114)
        at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1508)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:958)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1115)
        at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
        at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1478)
        at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:570)
        at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1189)
        at android.app.Activity.performStart(Activity.java:5436)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363)
            at android.app.ActivityThread.access$900(ActivityThread.java:161)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:157)
            at android.app.ActivityThread.main(ActivityThread.java:5356)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
            at dalvik.system.NativeStart.main(Native Method)