1. 程式人生 > >在Android library中不能使用switch-case語句訪問資源ID的原因分析及解決方案

在Android library中不能使用switch-case語句訪問資源ID的原因分析及解決方案


報錯是因為case分支後面跟的引數必須是常數,也就是說library中的R.java的資源ID不是常數,
public static final class animator {
public static int design_appbar_state_list_animator = 0x7f020001;
}
public static final class array {
public static int card_tabList = 0x7f030001;
}
public static final class attr {
public static int actionBarDivider = 0x7f040001;
public static int actionBarItemBackground = 0x7f040002;
public static int actionBarPopupTheme = 0x7f040003;
...}

如上面所示每一個資源ID都沒有被宣告為final
專案下的R.java的資源ID如下
public static final class animator {
public static final int design_appbar_state_list_animator=0x7f020000;
}
public static final class array {
public static final int card_tabList=0x7f030000;
public static final int tab_list=0x7f030001;
}

查了很多資料,除了用if-else替換沒有其他解決方案[Facepalm]

相關推薦

Android library不能使用switch-case語句訪問資源ID原因分析解決方案

報錯是因為case分支後面跟的引數必須是常數,也就是說library中的R.java的資源ID不是常數, public static final class animator { public static int design_appbar_state_list_animator = 0x7f020

在Activity的onCreate方法顯示PopupWindow導致異常的原因分析解決方案

一、前言        在某些情況下,我們需要一進入Activity就顯示PopupWindow,比如常見的選擇介面。但由於PopupWindow是依附於Activity的,如果Activity沒有建立完成,Activity還沒完全顯示出來就顯示PopupWindow的話,

iOSswitch case語句裡面不能定義物件,有語法錯誤,除非加一個花括號

最近發現一個問題呢 發現在switch的case裡面不能去定義物件了,一定義物件就會報錯了 仔細瞭解了一下在C或者C++中,只要是在任何一對花括號 “{ }”中定義的物件,那麼該物件的作用域就侷限在這對花括號裡面,上面的程式碼的錯誤就出現在這兒了。 switch (i) {          

Oracle生產跑批存儲過程或函數失效原因分析以及解決方案

nap rbm apt state tbb cap vsx oracl fig p,li { white-space: pre-wrap } Oracle生產中跑批存儲過程或函數失效原因分析以及解決方案: 報錯信息: 原因分析: 1.當我們編譯存儲過程或函數時,該過程

jquery使用$(#form).submit()提交表單無效原因分析解決Script

今天寫了一個表單驗證,驗證的時候沒有任何問題,但是頁面提交不了,很詭異,然後各種百度,查了一下的原因是input的id不能為submit 注意:提交表單的時候,input的id不能為submit   <dl>   <dd>   <label>角

Android記憶體洩漏問題分析解決方案

大家新年好,由於工作繁忙原因,有好一段時間沒有更新博文了(當然Github是一直都有更新的),趁著年底有點放假時間,我覺得抽空更新下部落格,總結一下工作中最常見記憶體洩漏問題,也是自己之前踩過的坑,為了讓大家少走彎路,系統全面總結一下記憶體洩漏問題分析原因及尋找解決方案。 概念 首

android系統性能優化(63)---Android APP 卡頓問題分析解決方案

使用者對卡頓的感知, 主要來源於介面的重新整理. 而介面的效能主要是依賴於裝置的UI渲染效能. 如果我們的UI設計過於複雜, 或是實現不夠友好,計算繪製演算法不夠優化, 裝置又不給力, 介面就會像卡住了一樣, 給使用者卡頓的感覺.如果你的應用介面出現卡頓不流暢的情況,不用懷疑,這很大原因是你沒有在16ms完成

nginx平滑重啟過程提示[alert] kill(2942, 1) failed (No such process)問題分析解決方案

場景 當nginx伺服器的配置加入新的模組後,若需要nginx伺服器使用新的配置,就必須平滑重啟nginx伺服器。 平滑重啟過程如下:nginx伺服器接收到重啟訊號時,首先讀取新的配置檔案,如果不存在語法問題,則啟動新的nginx服務,然後平緩的關閉原先的n

Android APP 卡頓問題分析解決方案

使用者對卡頓的感知, 主要來源於介面的重新整理. 而介面的效能主要是依賴於裝置的UI渲染效能. 如果我們的UI設計過於複雜, 或是實現不夠友好,計算繪製演算法不夠優化, 裝置又不給力, 介面就會像卡住了一樣, 給使用者卡頓的感覺. 如果你的應用介面出現卡頓不流

在裝有win10的電腦安裝Ubuntu16.04雙系統遇到的問題解決方案

安裝過程: 2.選擇u盤為第一啟動項,重啟。這裡遇到第一個問題。卡在啟動介面,就那個紫色介面有5個點在平移。 解決方案:把游標定位到“試用Ubuntu而不安裝”,按“e”編輯指令碼內容,在“quite slash”後面空格輸入nomodeset,其後也要

Java Web開發,自定義過濾器被執行兩次的原因分析解決辦法

本文出處:http://blog.csdn.net/chaijunkun/article/details/7646338,轉載請註明。由於本人不定期會整理相關博文,會對相應內容作出完善。因此強烈建議在原始出處檢視此文。 在Java Web開發過程中,我們可以使用過濾器和Sp

升級到 Android Studio 3.0 + Gradle 4.1 遇到的一些坑解決方案

問題一: Cannot set the value of read-only property 'outputFile' for ApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN, fullName

深度學習過擬合、欠擬合問題解決方案

  在進行資料探勘或者機器學習模型建立的時候,因為在統計學習中,假設資料滿足獨立同分布(i.i.d,independently and identically distributed),即當前已產生的資料可以對未來的資料進行推測與模擬,因此都是使用歷史資料建立模型,即使用已經產生的資料去訓練,然後使用該模型去

C語言中switch...case語句break的重要性

不能 實現 比例 重要性 case語句 毫無 ... 應該 switch 在C語言中switch...case語句是經常用到的,下面我介紹一下在使用該語句時候需要註意的一個細節問題。話不多說,直接舉例子: 例子1: switch(fruit) { case 1:printf

Switch Case語句多個值匹配同一個代碼塊的寫法

har com arch mssql pre html www ase cas switch ($p) { case ‘home‘: case ‘‘: $current_home = ‘current‘; break

Javaswitch-case語句

sub public return ID PE stat class a case cti class ArithmeticFunction {   public static int arithmetic(int a, int b, String operator) {

switch case語句能否作用在String,long上

bsp lips case語句 nbsp string 類型 span 出了 byte 在之前的eclipse中使用switch的case語句時是只能為(byte,short,char)int類型或枚舉類型。但在jdk1.7以後 在case語句中是可以使用String 以

C語言switch case語句定義變數問題

這個問題需要分開討論,C 語言和 C++ 的標準定義是不同的。 C++ int Caset(int a) { switch (a) { case 1: int b = 1; st

為什麼Python沒有Switch/Case語句?

不同於我用過的其它程式語言,Python 沒有 switch / case 語句。為了實現它,我們可以使用字典對映: def numbers_to_strings(argument): switcher = { 0: "zero", 1:

switch case 語句能否使用continue關鍵字?為什麼?

  毋庸置疑,在switch case 語句中不能使用continue 關鍵字。continue語句的作用是跳出本次迴圈,轉入執行下一次迴圈。故而,continue語句只能用於迴圈語句中,而switch case語句為多分支選擇語句,不是迴圈語句,所以在switch case