簡體   English   中英

Android 從資源文件 values.xml 中獲取字符串名稱

[英]Android get string name from resource file values.xml

我想從值resource文件中獲取名稱。 例如

值.xml

<string name="ind_ginger">Ginger</string>
<string name="ind_garlic">Garlic</string>

我將它們用於復選框,例如

<CheckBox
    android:id="@+id/c01"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="21dp"
    android:text="@string/ind_garlic"
    android:layout_alignTop="@+id/c02"
    android:layout_alignRight="@+id/saveChanges"
    android:layout_alignEnd="@+id/saveChanges" />
 <CheckBox
    android:id="@+id/c02"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="81dp"
    android:layout_marginStart="81dp"
    android:checked="false"
    android:text="@string/ind_ginger"
    android:visibility="visible"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_marginTop="40dp" />

在應用程序中,我需要訪問String名稱(請注意值)

for (CheckBox item : checkBoxList){
     if(item.isChecked())
     {
          //String text=item.getText().toString();String viewID = getResources().getResourceName(item.getId()); // gets me the name 
          String name =  getResources().getResourceEntryName(item.getId());
           String tName  =  
          //item.getText().toString();
          // String id = item.getTag().toString();
          Toast.makeText(getApplicationContext(), tName,Toast.LENGTH_SHORT).show();
          Log.d(viewID, TAG);

      }

  }

解析XML唯一的方法嗎?

試試

String ginger = getResources().getString(R.string.ind_ginger)

您可以使用它來獲取 string.xml 中的所有字符串鍵

Field[] fields = R.string.class.getFields();
        String[] allStringNames = new String[fields.length];
        for (int  i =0; i < fields.length; i++) {
            allStringNames[i] = fields[i].getName();
            Log.e("String Key Name",""+allStringNames[i]);
        }

希望這會有所幫助

只需將您的字符串項目存儲在(如果您將字符串文件存儲在 strings.xml 而不是 value.xml 中,則更好)

字符串.xml

 <string name="ind_ginger">Ginger</string>
    <string name="ind_garlic">Garlic</string>

獲取“KEY”名稱的最簡單方法如下:

Log.e("KEY_NAME", getResources().getResourceEntryName(R.string.app_name));

在這里你會得到“app_name”作為結果。

這也有助於支持多語言支持功能。

首先,如果您需要ind_ginger則需要ind_ginger更改代碼

<string name="ind_ginger">Ginger</string>

<string name="ind_ginger">ind_ginger</string>

String ginger = getResources().getString(R.string.ind_ginger)

得到ind_ginger 但是我可以從你的代碼中看到你正在使用.getResourceEntryName(item.getId())因為你需要創建一個 String 數組列表,它包含來自 strings.xml 的所有 itemId,然后你可以將它們與 item.get 一起使用(位置)。

這里的position是數組列表中項目的位置。

暫無
暫無

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

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