如何在android的XML和java代码中引用字符串常量

使用字符串(string)资源
       在一个Android工程中,我们可能会使用到大量的字符串作为提示信息。这些字符串都可以作为字符串资源声明在配置文件中,从而实现程序的可配置性。

       在代码中我们使用Context.getString()方法,通过传递资源ID参数来得到该字符串,也可以在其他资源文件中引用字符串资源,引用格式为:"@string/字符串资源名称。

       字符串资源XML文件的定义

       我们通过表来说明字符串资源是如何定义的,包括资源的位置、XML文件的格式、获得资源的方法和引用资源的方法等。

       表字符串资源得定义和使用
 
资源位置

res/values/strings.xml

字符串XML文件

格式

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

<resources>根元素

<string>子元素:<string name=

color_name>string_value</string>

获得字符串资源

的方法

Resources.getString()

引用字符串资源

的格式

Java代码中:R.string.string_nameXML文件中:@[package:]string/string_name



       下面将通过一个实例来演示资源文件的用法。在该实例中用到两个字符串资源:一个在布局文件中引用;另一个在Java代码中引用。
 
实例步骤说明如下。

       在该工程的res\values\目录下,创建一个字符串资源文件stirngs.xml,内容如下所示:

Java代码:
<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<string name="app_name">Test Resources</string> 
<string name="test_str1">从代码中引用!</string> 
<string name="test_str2">从资源文件引用!</string> 
</resources> 
 
       在该工程的res\layout\目录下,定义一个布局文件test_string.xml。在该布局文件中添加两个TextView视图对象:第一个TextView的文本内容直接引用strings.xml文件中的资源;第二个TextView的文本内容在代码中设置。

Java代码:
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 
<TextView 
android:text="@string/test_str1" 
android:id="@+id/myTextView01" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" /> 
<TextView 
android:text="" 
android:id="@+id/myTextView02" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" /> 
</LinearLayout> 
 

       在工程的com.amaker.ch03.string包中,创建一个TestStringActivity类。在该类的onCreate()方法中,设置当前的视图布局,并获得TextView实例。通过Context.getString()方法,从字符串资源中获得字符串常量,并将其设置为TextView的文本内容。

Java代码:
package eoe.demo.string; 
import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 
import com.amaker.test.R; 
/*
* 
* 
* @author 郭宏志 
* 测试字符串资源 
*/ 
public class TestStringActivity extends Activity { 
private TextView myTextView; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.test_string); 
myTextView = (TextView)findViewById(R.id.myTextView02); 
String str = getString(R.string.test_str2).toString(); 
myTextView.setText(str); 
} 
} 
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值