Android从资源文件values.xml获取字符串名称

时间:2017-11-09 12:01:20

标签: android android-resources

我想从值resource文件中获取名称。 例如

values.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吗?

5 个答案:

答案 0 :(得分:0)

尝试

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

答案 1 :(得分:0)

您可以使用它来获取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]);
        }

希望这会有所帮助

答案 2 :(得分:0)

只需存储字符串项(如果将字符串文件存储在strings.xml而不是value.xml中,则更好)

  

strings.xml

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

答案 3 :(得分:0)

获得“ KEY”名称的最简单方法如下:

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

在这里您将得到“ app_name”。

这也有助于支持多语言支持功能。

答案 4 :(得分:0)

首先,如果您需要Either[ExitWithErrorException, String],则需要从此更改代码

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,因为您需要创建一个String arraylist,该列表具有string.xml中的所有itemId,然后可以将它们与item.get(position)一起使用。

.getResourceEntryName(item.getId())是项目在数组列表中的位置。