Android使用getIdentifier()方法根據資源名來獲取資

TigerJin發表於2021-09-09

有時候我們想動態的根據一個資源名獲得到對應的資源id,就可以使用getResources().getIdentifier()方法來獲取該id。然後再使用該id進行相關的操作。

圖片描述

列印出來的log為:

11-24 22:15:02.471 12023-12023/com.oyp.demo D/MainActivity: ----> 獲取到的圖片資源 drawableId= 213096860111-24 22:15:02.476 12023-12023/com.oyp.demo D/MainActivity: ----> 獲取到的圖片資源 drawableId=213083757911-24 22:15:02.477 12023-12023/com.oyp.demo D/MainActivity: ----> 獲取到的圖片資源 mipmapId=213090304011-24 22:15:02.477 12023-12023/com.oyp.demo D/MainActivity: ----> 獲取到的字串資源 stringId=2131099669

我們開啟編譯好後的 com.oyp.demo.R檔案 

首先來看看activity_main這個layout的id是不是和我們列印出來的一樣是2130968601,如下圖所示,在 com.oyp.demo.R檔案中,activity_main的值確實是2130968601 

部分程式碼如下所示:

public static final class layout {
        ......        public static final int abc_screen_simple = 2130968595;        public static final int abc_screen_simple_overlay_action_mode = 2130968596;        public static final int abc_screen_toolbar = 2130968597;        public static final int abc_search_dropdown_item_icons_2line = 2130968598;        public static final int abc_search_view = 2130968599;        public static final int abc_select_dialog_material = 2130968600;        public static final int activity_main = 2130968601;        public static final int notification_media_action = 2130968602;        public static final int notification_media_cancel_action = 2130968603;        public static final int notification_template_big_media = 2130968604;        public static final int notification_template_big_media_narrow = 2130968605;

        ......        public layout() {
        }
    }

drawable型別的圖片 ic_launcher 的資源id 為 2130903040

 public static final class mipmap {
        public static final int ic_launcher = 2130903040;        public mipmap() {
        }
    }

drawable型別的圖片 oyp 資源id為 2130837579

public static final class drawable {
        ......        public static final int abc_textfield_search_material = 2130837578;        public static final int notification_template_icon_bg = 2130837580;        public static final int oyp = 2130837579;        public drawable() {
        }
    }

String型別的資源author id為 2131099669

public static final class string {

        ......        public static final int app_name = 2131099668;        public static final int author = 2131099669;        public static final int status_bar_notification_info_overflow = 2131099667;        public static final int title = 2131099670;        public string() {
        }
    }

可以發現列印出來的資源id和com.oyp.demo.R檔案生成的資源id是一致的,因此使用getResources().getIdentifier()方法完全可以正確地獲取資源的id。

http://www.apkbus.com/blog-865196-76899.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2144/viewspace-2812648/,如需轉載,請註明出處,否則將追究法律責任。

相關文章