CharSequence的getText()与String的getString()区别和为什么加""

转载 2015年11月19日 19:34:31

曾经在学习中碰见两种获取常量的方式:


        CharSequence chrs = getText(R.string.demo);

        String str = getString(R.string.demo);


        这两种方式有什么不同呢?一定要搞明白,开始实验:


        实验一:strings.xml中的相关代码<string name="demo">demo</string>


        main.xml中用线性布局定义两个文本标签,分别使用两种方式获取demo的值,详细代码

[html] view plaincopy
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent" >  
  5.   
  6.     <TextView  
  7.         android:id="@+id/firstText"  
  8.         android:layout_width="wrap_content"  
  9.         android:layout_height="wrap_content"  
  10.         android:text="" />  
  11.   
  12.     <TextView  
  13.         android:id="@+id/secondText"  
  14.         android:layout_width="wrap_content"  
  15.         android:layout_height="wrap_content"  
  16.         android:text="" />  
  17.   
  18. </LinearLayout>  

       注意android:text的值都是空的,下面继续看main.java是怎么处理的:

[java] view plaincopy
  1. package com.dy.study.firstbase;  
  2.   
  3. import android.os.Bundle;  
  4. import android.widget.TextView;  
  5. import android.app.Activity;  
  6.   
  7. public class Main extends Activity {  
  8.   
  9.     @Override  
  10.     public void onCreate(Bundle savedInstanceState) {  
  11.         super.onCreate(savedInstanceState);  
  12.         setContentView(R.layout.main);  
  13.   
  14.         findViews();  
  15.   
  16.         change();  
  17.     }  
  18.   
  19.     private TextView firstText;  
  20.     private TextView secondText;  
  21.   
  22.     private void findViews() {  
  23.         firstText = (TextView) findViewById(R.id.firstText);  
  24.         secondText = (TextView) findViewById(R.id.secondText);  
  25.     }  
  26.   
  27.     private void change() {  
  28.         CharSequence chs = getText(R.string.demo);  
  29.         String str = getString(R.string.demo);  
  30.         firstText.setText(chs);  
  31.         secondText.setText(str);  
  32.     }  
  33. }  
        好,看看实验一的结果:


        可以看到,两个值完全一样,怎么回事?难道这两种方式的效果时完全一样的吗?先不忙下结论,继续实验。


        实验二:把strings.xml中的那句相关代码改成<string name="demo"><b>demo</b></string>,仔细看,中间加了个<b></b>,然后其他都不改变,看结果:


       你看,前面那个标签变了,这说明CharSequence的getText()是获取格式化的常量值,而String的getString()是单单获取值,而舍去了格式化。

       就这么简单吗?可我又想了,如果把它们加起来,会是什么样子呢,继续实验。

       实验三:在实验二的基础上改下main.java的内容:

        main.java

[java] view plaincopy
  1. package com.dy.study.firstbase;  
  2.   
  3. import android.os.Bundle;  
  4. import android.widget.TextView;  
  5. import android.app.Activity;  
  6.   
  7. public class Main extends Activity {  
  8.   
  9.     @Override  
  10.     public void onCreate(Bundle savedInstanceState) {  
  11.         super.onCreate(savedInstanceState);  
  12.         setContentView(R.layout.main);  
  13.   
  14.         findViews();  
  15.   
  16.         change();  
  17.     }  
  18.   
  19.     private TextView firstText;  
  20.   
  21.     private void findViews() {  
  22.         firstText = (TextView) findViewById(R.id.firstText);  
  23.     }  
  24.   
  25.     private void change() {  
  26.         CharSequence chs = getText(R.string.demo);  
  27.         String str = getString(R.string.demo);  
  28.         firstText.setText(chs + str);  
  29.     }  
  30. }  
        这里只让显示标签一的内容,猜想一下是不是一个粗一个细呢?看结果:


       被同化了,这让我想起了java的隐式转换,实验到此为止。

版权声明:本文为博主原创文章,未经博主允许不得转载。

CharSequence的getText()与String的getString()『Android系列七』

曾经在学习中碰见两种获取常量的方式:         CharSequence chrs = getText(R.string.demo);         String str = ge...
  • Dazlly
  • Dazlly
  • 2012年08月13日 12:12
  • 9465

CharSequence的getText()与String的getString()

曾经在学习中碰见两种获取常量的方式:         CharSequence chrs = getText(R.string.demo);         String str = getStr...
  • ocean20
  • ocean20
  • 2015年03月11日 14:44
  • 1256

CharSequence与String的区别是什么

CharSequence与String都能用于定义字符串,但CharSequence的值是可读可写序列,而String的值是只读序列。 CharSequence是实现这个接口的实例 举例: Ch...
  • xiaohui2015
  • xiaohui2015
  • 2015年07月30日 13:24
  • 6217

CharSequence与String

问题描述:       在android平台上,有很多text values类型为CharSequence,如TextView等大部分控件的setText()方法,其参数都为CharSequence...
  • kaka123ac
  • kaka123ac
  • 2014年12月24日 11:53
  • 1120

CharSequence的getText()与String的getString()区别

曾经在学习中碰见两种获取常量的方式:         CharSequence chrs = getText(R.string.demo);         String st...
  • newbie_zhu
  • newbie_zhu
  • 2016年06月03日 09:41
  • 383

getText 与getString 区别

Android提供多种获取资源文件方法,但是需要注意以下方法: CharSequence getText(int resId):返回本地、样式化的字符。 String getString(int r...
  • amaomao123
  • amaomao123
  • 2015年04月16日 15:51
  • 367

Android资源文件R.string.hello_world与getResources().getString(id)

在我们的项目中,通常把要出现在项目中的中文存储到String资源文件下。通过R.string.hello_world来得到改中文,但这种方式返回的是一int型的ID,而对于有些方法必须是Stirng类...
  • GEM_yaorao
  • GEM_yaorao
  • 2015年11月02日 14:02
  • 2681

getString()方法和getObject()方法区别

JDBC调用getString()/getInt()/getData()方法时,程序一次性查询结果数据读入内存,然后通过ResultSet()的next()方法和getString()方法获取数据。而...
  • huscker
  • huscker
  • 2016年11月08日 11:23
  • 864

Android - CharSequence和String的比较和转换

CharSequence和String的比较和转换本文地址: http://blog.csdn.net/caroline_wendyCharSequence转换String:str = cs.toSt...
  • u012515223
  • u012515223
  • 2014年11月20日 07:34
  • 17225

JDBC:getNString()和getString()的区别

今天偶然看到ResultSet 里面有一个getNString方法。 api解释如下 哦,这样。 然后查getStrign的。 这次是英文 相比之下,getN...
  • a695929533
  • a695929533
  • 2015年06月13日 21:50
  • 4245
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CharSequence的getText()与String的getString()区别和为什么加""
举报原因:
原因补充:

(最多只允许输入30个字)