2012-02-14 50 views
2

我只是问你一个简单的问题给你的专家,因为我刚开始学习android基础知识。当在android中声明一个字符串时出现警告

我试着创建一个表视图并在其中显示一些字符串。

我写这样的XML,但我得到一些警告“I18N”硬编码字符串“打开...”,应使用@string 资源“ 当一个字符串声明。

<TableRow> 
    <TextView 
     android:layout_column="1" 
     android:text="hello" 
     android:padding="3dip" /> 
    <TextView 
     android:text="helloo" 
     android:gravity="right" 
     android:padding="3dip" /> 
</TableRow> 

<TableRow> 
    <TextView 
     android:layout_column="1" 
     android:text="how" 
     android:padding="3dip" /> 
    <TextView 
     android:text="Ctrl-Shift-S" 
     android:gravity="right" 
     android:padding="3dip" /> 
</TableRow> 

<View 
    android:layout_height="2dip" 
    android:background="#FF909090" /> 

<TableRow> 
    <TextView 
     android:text="are" 
     android:padding="3dip" /> 
    <TextView 
     android:text="you" 
     android:padding="3dip" /> 
</TableRow> 

能否请你帮我please.Thanks提前。

回答

3

字符串应该去res/values/strings.xml文件,它可能是这样的:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string name="hello">Hello World!</string> 
    <string name="app_name">My App</string> 
    <string name="ctrl-shift-s">Ctrl-Shift-S</string> 
</resources> 

应用程序可以很容易地进行本地化:在Eclipse中,用鼠标右键单击资源文件夹,选择Android的XML值文件,点击下一步。输入strings.xml,点击下一步。现在您可以添加各种选项,如语言或网络代码。现在

Android resource localization http://i43.tinypic.com/rvx635.png

您可以使用@string/ctrl-shift-s引用您的字符串。

<TableRow> 
    <TextView 
     android:layout_column="1" 
     android:text="how" 
     android:padding="3dip" /> 
    <TextView 
     android:id="@+id/textview-command" 
     android:text="@string/ctrl-shift-s" 
     android:gravity="right" 
     android:padding="3dip" /> 
</TableRow> 

或者,在Java代码中,R.string.ctrl-shift-s

@+id/xyz创建一个ID,以便您可以从代码中获取视图。

所有资源都将自动添加到R类中。

TextView textView = (TextView) findViewById(R.id.textview-command); 
if (textView != null) 
    textView.setText(R.string.ctrl-shift-s); 
+0

当我给它显示警告属性的资源缺少的Android命名空间 前缀。 – suji 2012-02-14 06:38:32

+0

我想你的布局文件缺少根元素的'xmlns:android =“http://schemas.android.com/apk/res/android”'属性。 – David 2012-02-14 06:43:40

+0

现在我给我的XML等 suji 2012-02-14 06:51:24

1

是声明静态字符串值@String资源,并提供从布局XML文件的引用。

<resources> 
    <string name="hello">Hello World, HomeActivity!</string> 
</resources> 
2

“I18N”是国际化的简写;因为并非全世界每个人都会说或读英文。关于“应该使用@string资源”的警告只是提醒特定于区域的信息应该放置在“资源包”(例如/res/values/strings.xml)中,以便可以使用不同语言提供标签和其他文本而无需为每种语言重新编码和重新编译整个应用程序。

如果您只是测试一下,您可以放心地忽略该警告,但最好养成将字符串作为外部文件中的资源引用的习惯,而不是直接在应用程序本身中对其进行硬编码。

0

只需在资源值文件夹中创建一个名为字符串的新.xml文件。 在strings.xml文件中编写所有字符串,然后从该文件分配字符串。 @字符串/任意字符串

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string name="Your-String1">yourstring1</string> 
    <string name="Your-String2">yourstring2</string> 
</resources 
相关问题