Как программно настроить Icon в диалоге оповещений?

Используя эти операторы для создания диалогового окна Alert и установки для него значка,

       AlertDialog.Builder builder = new AlertDialog.Builder(this);

       builder.setIcon(this.getDrawable(R.drawable.video_downloader));

       builder.setTitle("Congratulations !!!");

       builder.show();

Но это происходит сбой в setIcon, когда я проверил в папке drawable, значок video_downloader уже там.

AndroidRuntime: FATAL EXCEPTION: main
java.lang.IllegalStateException: Could not execute method of the activity
    at android.view.View$1.onClick(View.java:3607)
    at android.view.View.performClick(View.java:4212)
    at android.view.View$PerformClick.run(View.java:17476)
    at android.os.Handler.handleCallback(Handler.java:800)
    at android.os.Handler.dispatchMessage(Handler.java:100)
    at android.os.Looper.loop(Looper.java:194)
    at android.app.ActivityThread.main(ActivityThread.java:5371)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:525)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
    at dalvik.system.NativeStart.main(Native Method)
 Caused by: java.lang.reflect.InvocationTargetException
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:525)
    at android.view.View$1.onClick(View.java:3602)
    at android.view.View.performClick(View.java:4212) 
    at android.view.View$PerformClick.run(View.java:17476) 
    at android.os.Handler.handleCallback(Handler.java:800) 
    at android.os.Handler.dispatchMessage(Handler.java:100) 
    at android.os.Looper.loop(Looper.java:194) 
    at android.app.ActivityThread.main(ActivityThread.java:5371) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:525) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 
    at dalvik.system.NativeStart.main(Native Method) 
 Caused by: java.lang.NoSuchMethodError: numan.downloader.Test.Front.getDrawable
    at numan.downloader.Test.Front.GetMedia(Front.java:115)
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:525) 
    at android.view.View$1.onClick(View.java:3602) 
    at android.view.View.performClick(View.java:4212) 
    at android.view.View$PerformClick.run(View.java:17476) 
    at android.os.Handler.handleCallback(Handler.java:800) 
    at android.os.Handler.dispatchMessage(Handler.java:100) 
    at android.os.Looper.loop(Looper.java:194) 
    at android.app.ActivityThread.main(ActivityThread.java:5371) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:525) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 
    at dalvik.system.NativeStart.main(Native Method) 
07-31 08:35:51.291 500-519/? E/AppErrorDialog: Failed to get ILowStorageHandle instance

4 ответа

Решение

Попробуй это,

   AlertDialog.Builder builder = new AlertDialog.Builder(this);

   builder.setIcon(getResources().getDrawable(R.drawable.video_downloader));

   builder.setTitle("Congratulations !!!");

   builder.show();

Использовать этот

builder.setIcon(ContextCompat.getDrawable(MyActivity.this,R.drawable.video_downloader));

вместо этого

builder.setIcon(this.getDrawable(R.drawable.video_downloader));

FYI

getDrawable() метод устарел на уровне API 22.

Здесь произошла ваша ошибка builder.setIcon(this.getDrawable(R.drawable.video_downloader));

просто попробуй это

// Setting Icon to Dialog
    alertDialog.setIcon(R.drawable.video_downloader);

отослать это

Есть 2 способа установить значок в диалоговом окне предупреждения

1) AlertDialog.Builder setIcon(Drawable icon)Установите Drawable для использования в заголовке.

Использование: builder.setIcon (ContextCompat.getDrawable (context, R.drawable.video_downloader));

2) AlertDialog.Builder setIcon(int iconId)Установите идентификатор ресурса Drawable для использования в заголовке.

Использование: builder.setIcon (R.drawable.video_downloader);

Другие вопросы по тегам