2014-03-13 125 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(); 
    }   
}