ResourceBundle 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
資源配套包含地區設定特定的物件。
[Android.Runtime.Register("java/util/ResourceBundle", DoNotGenerateAcw=true)]
public abstract class ResourceBundle : Java.Lang.Object
[<Android.Runtime.Register("java/util/ResourceBundle", DoNotGenerateAcw=true)>]
type ResourceBundle = class
inherit Object
- 繼承
- 衍生
- 屬性
備註
資源配套包含地區設定特定的物件。 例如,當您的程式需要地區設定特定的資源時, String
您的程式可以從適用于目前使用者地區設定的資源套件組合載入它。 如此一來,您可以撰寫程式碼,與使用者的地區設定隔離大部分,但並非所有地區設定特定資訊在資源組合中隔離。
這可讓您撰寫程式:UL > LI 可以輕易地當地語系化或翻譯成不同的語言 < LI > 一次 < 處理多個地區設定 LI > ,稍後可以輕鬆地修改以支援更多地區 < 設定 /UL ><<>
資源配套屬於成員共用通用基底名稱但名稱也有識別其地區設定的其他元件系列。 例如,一系列資源套件組合的基底名稱可能是 「MyResources」。 此系列應具有預設資源配套,其名稱與其系列相同 - 「MyResources」 ,而且如果不支援特定地區設定,則會當做最後一個方法的配套使用。 接著,此系列可以視需要提供許多地區設定特定成員,例如名為 「MyResources_de」 的德文成員。
系列中的每個資源配套都包含相同的專案,但已針對該資源配套所代表的地區設定轉譯專案。 例如,「MyResources」 和 「MyResources_de」 在 String
取消作業的按鈕上使用 。 在 「MyResources」 中, String
可能包含 「Cancel」,而 「MyResources_de」 中可能包含 「Abbrechen」。
如果不同國家/地區有不同的資源,您可以進行特製化:例如,「MyResources_de_CH」 包含瑞士 (CH) 中德文語言 (de) 的物件。 如果您只想修改特製化中的某些資源,您可以這麼做。
當您的程式需要地區設定特定物件時,它會使用 #getBundle(java.lang.String, java.util.Locale) getBundle
方法載入 ResourceBundle
類別: < blockquote>
ResourceBundle myResources =
ResourceBundle.getBundle("MyResources", currentLocale);
</blockquote>
資源配套包含索引鍵/值組。 索引鍵可唯一識別套件組合中的地區設定特定物件。 以下是包含兩個索引鍵/值組的 ListResourceBundle
範例: < blockquote>
public class MyResources extends ListResourceBundle {
protected Object[][] getContents() {
return new Object[][] {
// LOCALIZE THE SECOND STRING OF EACH ARRAY (e.g., "OK")
{"OkKey", "OK"},
{"CancelKey", "Cancel"},
// END OF MATERIAL TO LOCALIZE
};
}
}
</blockquote > 索引鍵一律 String
為 。 在此範例中,索引鍵為 「OkKey」 和 「CancelKey」。 在上述範例中,這些值也是 String
s--「OK」 和 「Cancel」--,但不需要。 這些值可以是任何類型的物件。
您可以使用適當的 getter 方法,從資源組合擷取物件。 因為 「OkKey」 和 「CancelKey」 都是字串,所以您可以使用 getString
來擷取它們: < blockquote>
button1 = new Button(myResources.getString("OkKey"));
button2 = new Button(myResources.getString("CancelKey"));
</blockquote > getter 方法全都需要索引鍵做為引數,並在找到時傳回物件。 如果找不到物件,getter 方法會 MissingResourceException
擲回 。
getString
此外, ResourceBundle
也提供取得字串陣列的方法, getStringArray
以及任何其他物件類型的泛型 getObject
方法。 使用 getObject
時,您必須將結果轉換成適當的類型。 例如: < blockquote>
int[] myIntegers = (int[]) myResources.getObject("intList");
</blockquote>
JAVA 平臺提供 和 的 ResourceBundle
ListResourceBundle
PropertyResourceBundle
兩個子類別,提供相當簡單的方法來建立資源。 如您在上一個範例 ListResourceBundle
中所見,將其資源當做索引鍵/值組的清單來管理。 PropertyResourceBundle
會使用屬性檔來管理其資源。
如果 ListResourceBundle
或 PropertyResourceBundle
不符合您的需求,您可以撰寫自己的 ResourceBundle
子類別。 您的子類別必須覆寫兩個方法: handleGetObject
和 getKeys()
。
如果子類別同時供多個執行緒使用,則子類別的 ResourceBundle
實作必須是安全線程。 這個類別中非抽象方法的預設實作,以及直接已知具象子類別 ListResourceBundle
中的方法,而且 PropertyResourceBundle
是安全線程。
<h3 > ResourceBundle.Control < /h3>
類別 ResourceBundle.Control
提供由採用 ResourceBundle.Control
實例之 getBundle
處理站方法執行套件組合載入程式所需的資訊。 您可以實作自己的子類別,以啟用非標準資源組合格式、變更搜尋策略或定義快取參數。 如需詳細資訊,請參閱 類別和 #getBundle(String, Locale, ClassLoader, Control) getBundle
Factory 方法的描述。
<h3 > 快取管理 < /h3>
預設會快取 Factory 方法所 getBundle
建立的資源配套實例,而且如果已快取,Factory 方法會多次傳回相同的資源配套實例。 getBundle
用戶端可能會清除快取、使用存留時間值管理快取資源配套實例的存留期,或指定不要快取資源配套實例。 如需詳細資訊,請參閱 #getBundle (String、Locale、ClassLoader、Control) < 程式碼 > getBundle < /code > Factory 方法、、 #clearCache(ClassLoader) clearCache
Control#getTimeToLive(String, Locale) ResourceBundle.Control.getTimeToLive
和 Control#needsReload(String, Locale, String, ClassLoader, ResourceBundle, long) ResourceBundle.Control.needsReload
的描述。
<h3 > 範例 < /h3>
以下是一個非常簡單的子類別範例 ResourceBundle
, MyResources
其會針對您可能會使用 Map
) 的較大資源管理兩個資源 (。 請注意,如果 「parent-level」 ResourceBundle
處理的值與) 下列 okKey 相同的值 (,您就不需要提供值。 <blockquote>
// default (English language, United States)
public class MyResources extends ResourceBundle {
public Object handleGetObject(String key) {
if (key.equals("okKey")) return "Ok";
if (key.equals("cancelKey")) return "Cancel";
return null;
}
public Enumeration<String> getKeys() {
return Collections.enumeration(keySet());
}
// Overrides handleKeySet() so that the getKeys() implementation
// can rely on the keySet() value.
protected Set<String> handleKeySet() {
return new HashSet<String>(Arrays.asList("okKey", "cancelKey"));
}
}
// German language
public class MyResources_de extends MyResources {
public Object handleGetObject(String key) {
// don't need okKey, since parent level handles it.
if (key.equals("cancelKey")) return "Abbrechen";
return null;
}
protected Set<String> handleKeySet() {
return new HashSet<String>(Arrays.asList("cancelKey"));
}
}
</blockquote > 您不需要限制自己使用單一系列 。 ResourceBundle
例如,您可以有一組例外狀況訊息、 ExceptionResources
(ExceptionResources_fr
、 ExceptionResources_de
...) ,以及一組用於小工具的套件組合, WidgetResource
(WidgetResources_fr
、 WidgetResources_de
...) ;您可以視需要分割資源。
已在 1.1 中新增。
的 java.util.ResourceBundle
JAVA 檔。
此頁面的部分是根據所建立和共用的工作進行修改,並根據 2.5 屬性授權中所述的詞彙來使用。
建構函式
ResourceBundle() |
唯一建構函式。 |
ResourceBundle(IntPtr, JniHandleOwnership) |
建立 JNI 物件的 Managed 標記法時使用的建構函式;由執行時間呼叫。 |
屬性
BaseBundleName |
如果已知,則傳回這個套件組合的基底名稱,如果為未知,則 |
Class |
傳回這個 |
Handle |
基礎 Android 實例的控制碼。 (繼承來源 Object) |
JniIdentityHashCode |
資源配套包含地區設定特定的物件。 (繼承來源 Object) |
JniPeerMembers |
資源配套包含地區設定特定的物件。 |
Keys |
傳回這個 |
Locale |
傳回此資源組合的地區設定。 |
Parent |
這個套件組合的父系組合。 |
PeerReference |
資源配套包含地區設定特定的物件。 (繼承來源 Object) |
ThresholdClass |
此 API 支援適用于 Android 的 Mono 基礎結構,並不適合直接從您的程式碼使用。 |
ThresholdType |
此 API 支援適用于 Android 的 Mono 基礎結構,並不適合直接從您的程式碼使用。 |
方法
ClearCache() |
從已使用呼叫端類別載入器載入的快取中移除所有資源配套。 |
ClearCache(ClassLoader) |
從指定的類別載入器載入的快取中移除所有資源配套。 |
Clone() |
建立並傳回這個 物件的複本。 (繼承來源 Object) |
ContainsKey(String) |
判斷指定的 |
Dispose() |
資源配套包含地區設定特定的物件。 (繼承來源 Object) |
Dispose(Boolean) |
資源配套包含地區設定特定的物件。 (繼承來源 Object) |
Equals(Object) |
指出其他物件是否「等於」這個物件。 (繼承來源 Object) |
GetBundle(String) |
使用指定的基底名稱、預設地區設定和呼叫端的類別載入器,取得資源組合。 |
GetBundle(String, Locale) |
使用指定的基底名稱和地區設定,以及呼叫端的類別載入器,取得資源配套。 |
GetBundle(String, Locale, ClassLoader) |
使用指定的基底名稱、地區設定和類別載入器取得資源套件組合。 |
GetBundle(String, Locale, ClassLoader, ResourceBundle+Control) |
使用指定的基底名稱、預設地區設定和呼叫端的類別載入器,取得資源組合。 |
GetBundle(String, Locale, ResourceBundle+Control) |
使用指定的基底名稱、預設地區設定和呼叫端的類別載入器,取得資源組合。 |
GetBundle(String, ResourceBundle+Control) |
使用指定的基底名稱、預設地區設定和呼叫端的類別載入器,取得資源組合。 |
GetHashCode() |
傳回此物件的雜湊碼值。 (繼承來源 Object) |
GetObject(String) |
從這個資源組合或其其中一個父系取得指定索引鍵的 物件。 |
GetString(String) |
從此資源組合或其其中一個父系取得指定索引鍵的字串。 |
GetStringArray(String) |
從這個資源組合或其其中一個父系取得指定索引鍵的字串陣列。 |
HandleGetObject(String) |
從這個資源組合取得指定索引鍵的 物件。 |
HandleKeySet() |
傳 |
JavaFinalize() |
當垃圾收集判斷物件不再參考物件時,垃圾收集行程會在物件上呼叫。 (繼承來源 Object) |
KeySet() |
傳 |
Notify() |
喚醒正在等候此物件監視器的單一線程。 (繼承來源 Object) |
NotifyAll() |
喚醒正在等候此物件監視器的所有線程。 (繼承來源 Object) |
SetHandle(IntPtr, JniHandleOwnership) |
設定 Handle 屬性。 (繼承來源 Object) |
SetParent(ResourceBundle) |
設定這個套件組合的父系組合。 |
ToArray<T>() |
資源配套包含地區設定特定的物件。 (繼承來源 Object) |
ToString() |
傳回物件的字串表示。 (繼承來源 Object) |
UnregisterFromRuntime() |
資源配套包含地區設定特定的物件。 (繼承來源 Object) |
Wait() |
讓目前的執行緒等到喚醒為止,通常是 em < notified/em > 或 < em > interrupted < /em > 。 >< (繼承來源 Object) |
Wait(Int64) |
讓目前的執行緒等到喚醒為止,通常是 em < notified/em > 或 < em > interrupted < /em > ,或直到經過一定數量的即時為止。 <> (繼承來源 Object) |
Wait(Int64, Int32) |
讓目前的執行緒等到喚醒為止,通常是 em < notified/em > 或 < em > interrupted < /em > ,或直到經過一定數量的即時為止。 <> (繼承來源 Object) |
明確介面實作
IJavaPeerable.Disposed() |
資源配套包含地區設定特定的物件。 (繼承來源 Object) |
IJavaPeerable.DisposeUnlessReferenced() |
資源配套包含地區設定特定的物件。 (繼承來源 Object) |
IJavaPeerable.Finalized() |
資源配套包含地區設定特定的物件。 (繼承來源 Object) |
IJavaPeerable.JniManagedPeerState |
資源配套包含地區設定特定的物件。 (繼承來源 Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
資源配套包含地區設定特定的物件。 (繼承來源 Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
資源配套包含地區設定特定的物件。 (繼承來源 Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
資源配套包含地區設定特定的物件。 (繼承來源 Object) |
擴充方法
JavaCast<TResult>(IJavaObject) |
執行 Android 執行時間檢查的類型轉換。 |
JavaCast<TResult>(IJavaObject) |
資源配套包含地區設定特定的物件。 |
GetJniTypeName(IJavaPeerable) |
資源配套包含地區設定特定的物件。 |