簡體   English   中英

如何在 Android 中以編程方式將圖標設置為警報對話框

[英]How to set Icon to the Alert Dialog Programatically in Android

Em 使用這些語句創建警報對話框並為其設置圖標,

       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:無法獲取 ILoStorageHandle 實例

試試這個,

   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));

供參考

API 級別 22 中不推薦使用getDrawable()方法。

你的錯誤發生在這里builder.setIcon(this.getDrawable(R.drawable.video_downloader));

試試這個

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

參考這個

有兩種方法可以在警報對話框中設置圖標

1) AlertDialog.Builder setIcon(Drawable icon)設置標題中使用的Drawable。

用法: builder.setIcon(ContextCompat.getDrawable(context,R.drawable.video_downloader));

2) AlertDialog.Builder setIcon(int iconId)設置標題中使用的Drawable的資源id。

用法: builder.setIcon(R.drawable.video_downloader);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM