2014-03-13 126 views
0

我想创建一个应用程序,它可以从android中的资源文件中获取字符串名称,当我们使用string.Is搜索时有任何方法吗? 假设我的strings.xml文件有以下内容如何从android资源文件中的字符串查找字符串名称

Hello world!

现在我想要做的是当我在我的应用程序的搜索菜单中键入Hello world时,它应该返回abc作为字符串名称。

+1

你的意思是[''Context.getString(int resId)'](http://developer.android.com/guide/topics/resources/string-resource.html)? *您使用String *进行搜索是什么意思?例? –

+0

如果我的xml资源文件包含以下条目 hello world。是否可以使用hello world获取res id name,即“abc” – user3413619

回答

0

在您的活动中使用getResources().getString(R.string.yourstring)。字符串yourstringStrings.xml中定义。

1

1.当你说: “假如我的strings.xml文件有以下”,并有一个,这将意味着你strings.xml会是什么样子的 “Hello world!”:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

    <string name="hello_world">Hello world!</string> 

</resources> 

这意味着在您的应用的资源中定义了字符串,可以通过导入yourpackage.R来使用这些字符串 - 编译器将如何识别R中的值。

那么值为“Hello world!”的字符串的名称是什么?在你的XML?

2.要获得该值,你可以使用:

getResources.getString(R.string.stringNameHere); 

3.并按照您的要求,我建议你从你strings.xml所有strings在数组并通过它来运行搜索。

为了更多地了解这一切,请经过:

- >http://developer.android.com/guide/topics/resources/string-resource.html

- >https://developer.android.com/samples/BasicNetworking/res/values/strings.html

- >Organizing Strings.xml

0

您可以通过使用反射定义的字符串循环对R.string像这样:

for (Field field : R.string.class.getDeclaredFields()) 
{ 
    try { 
     Log.i("Strings", String.format("String %s = %s", field.getName(), 
             getResources().getString(field.getInt(field)))); 
    } catch (NotFoundException e) { 
     e.printStackTrace(); 
    } catch (IllegalArgumentException e) { 
     e.printStackTrace(); 
    } catch (IllegalAccessException e) { 
     e.printStackTrace(); 
    }   
}