CharSequence的getText()与String的getString()『Android系列七』
2012-08-13 12:12
302 查看
曾经在学习中碰见两种获取常量的方式:
CharSequence chrs = getText(R.string.demo);
String str = getString(R.string.demo);
这两种方式有什么不同呢?一定要搞明白,开始实验:
实验一:strings.xml中的相关代码<string name="demo">demo</string>
main.xml中用线性布局定义两个文本标签,分别使用两种方式获取demo的值,详细代码
注意android:text的值都是空的,下面继续看main.java是怎么处理的:
可以看到,两个值完全一样,怎么回事?难道这两种方式的效果时完全一样的吗?先不忙下结论,继续实验。
实验二:把strings.xml中的那句相关代码改成<string name="demo"><b>demo</b></string>,仔细看,中间加了个<b></b>,然后其他都不改变,看结果:
你看,前面那个标签变了,这说明CharSequence的getText()是获取格式化的常量值,而String的getString()是单单获取值,而舍去了格式化。
就这么简单吗?可我又想了,如果把它们加起来,会是什么样子呢,继续实验。
实验三:在实验二的基础上改下main.java的内容:
main.java
被同化了,这让我想起了java的隐式转换,实验到此为止。
CharSequence chrs = getText(R.string.demo);
String str = getString(R.string.demo);
这两种方式有什么不同呢?一定要搞明白,开始实验:
实验一:strings.xml中的相关代码<string name="demo">demo</string>
main.xml中用线性布局定义两个文本标签,分别使用两种方式获取demo的值,详细代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/firstText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" /> <TextView android:id="@+id/secondText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" /> </LinearLayout>
注意android:text的值都是空的,下面继续看main.java是怎么处理的:
package com.dy.study.firstbase; import android.os.Bundle; import android.widget.TextView; import android.app.Activity; public class Main extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); findViews(); change(); } private TextView firstText; private TextView secondText; private void findViews() { firstText = (TextView) findViewById(R.id.firstText); secondText = (TextView) findViewById(R.id.secondText); } private void change() { CharSequence chs = getText(R.string.demo); String str = getString(R.string.demo); firstText.setText(chs); secondText.setText(str); } }好,看看实验一的结果:
可以看到,两个值完全一样,怎么回事?难道这两种方式的效果时完全一样的吗?先不忙下结论,继续实验。
实验二:把strings.xml中的那句相关代码改成<string name="demo"><b>demo</b></string>,仔细看,中间加了个<b></b>,然后其他都不改变,看结果:
你看,前面那个标签变了,这说明CharSequence的getText()是获取格式化的常量值,而String的getString()是单单获取值,而舍去了格式化。
就这么简单吗?可我又想了,如果把它们加起来,会是什么样子呢,继续实验。
实验三:在实验二的基础上改下main.java的内容:
main.java
package com.dy.study.firstbase; import android.os.Bundle; import android.widget.TextView; import android.app.Activity; public class Main extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); findViews(); change(); } private TextView firstText; private void findViews() { firstText = (TextView) findViewById(R.id.firstText); } private void change() { CharSequence chs = getText(R.string.demo); String str = getString(R.string.demo); firstText.setText(chs + str); } }这里只让显示标签一的内容,猜想一下是不是一个粗一个细呢?看结果:
被同化了,这让我想起了java的隐式转换,实验到此为止。
相关文章推荐
- CharSequence的getText()与String的getString()
- CharSequence的getText()与String的getString()(转)
- Android getText(int resId)和getString(int resId)
- Android getText(int resId) 与 getString(int resId)的区别
- Android getText(int resId)和getString(int resId)
- CharSequence的getText()与String的getString()区别和为什么加""
- CharSequence的getText()与String的getString()区别
- Android getText(int resId)和getString(int resId)
- android-getPackageManager().hasSystemFeature(String string)的应用
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
- Android中putString()和getString()用法
- Android在putString和getString使用方法
- String android.content.Context.getString(int resId, Object... formatArgs)
- Android getText(@string/a)和直接使用字符的区别
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
- Android网络连接getUrlBytes和getUrlString
- Android里面i.getStringExtra什么作用
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
- android典型代码系列(八)------传递一个String进行MD5编码
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)