CharSequence的getText()与String的getString()(转)
CharSequence的getText()与String的getString()『Android系列七』
曾经在学习中碰见两种获取常量的方式:
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>
<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);
- }
- }
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);
- }
- }
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()(转)的更多相关文章
- 0703-APP-Notification-statue-bar
1.展示显示textTicker和仅仅有icon的两种情况:当參数showTicker为true时显示否则不显示 // In this sample, we'll use the same text ...
- 一个帖子学会Android开发四大组件
来自:http://www.cnblogs.com/pepcod/archive/2013/02/11/2937403.html 这个文章主要是讲Android开发的四大组件,本文主要分为 一.Act ...
- Android Service学习之本地服务
Service是在一段不定的时间运行在后台,不和用户交互应用组件.每个Service必须在manifest中 通过来声明.可以通过contect.startservice和contect.bindse ...
- 一天就学会Android开发四大组件
这个文章主要是讲Android开发的四大组件,本文主要分为 一.Activity详解二.Service详解三.Broadcast Receiver详解四.Content Provider详解外加一个重 ...
- android显示通知栏Notification以及自定义Notification的View
遇到的最大的问题是监听不到用户清除通知栏的广播.所以是不能监听到的. 自定义通知栏的View,然后service运行时更改notification的信息. /** * Show a notificat ...
- android 四大组件详解
这个文章主要是讲Android开发的四大组件,本文主要分为 一.Activity详解二.Service详解三.Broadcast Receiver详解四.Content Provider详解外加一个重 ...
- 9-第一个app项目
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- 关于Android开发四大组件
文章主要是讲Android开发的四大组件,本文主要分为 文章源自:http://www.cnblogs.com/pepcod/archive/2013/02/11/2937403.html 一.Act ...
- String详解, String和CharSequence区别, StringBuilder和StringBuffer的区别 (String系列之1)
本章主要介绍String和CharSequence的区别,以及它们的API详细使用方法. 转载请注明出处:http://www.cnblogs.com/skywang12345/p/string01. ...
随机推荐
- leetcode383
已知两个字符串,然后比较一个字符串是否来自另一个字符串,没有顺序要求. 简单题,用一个数组保存前一个字符串的每一个字符出现的次数,然后循环后一个字符串去检查,如果次数不够了,那么就返回false pu ...
- ECOS高可用集群
此架构由8台PC .2台防火墙.2台24口三层交换机组成, 注意点: 1)Load Balance:Haprxoy+keepalived 实现高可用. 2)web:Nginx+php-fpm 3)DB ...
- swf version 与flash player 对应关系
2013-04-16更新:更新Flash Player 11.7/AIR 3.7正式版. 详细链接FlashPlayer 11.7详情 2013-03-10更新:更新Flash Player 11.6 ...
- Immutable 详解及 React 中实践
本文转自:https://github.com/camsong/blog/issues/3 Shared mutable state is the root of all evil(共享的可变状态是万 ...
- 关于PHP执行超时的问题
PHP配置文件的参数max_execution_time表示脚本执行超时时间 max_execution_time=0表示不限制 max_execution_time=2表示执行两秒后终止,同时报错F ...
- SSH returns “too many authentication failures” error – HostGator
I am an avid fan of using HostGator for small business WordPress website hosting. I love that they u ...
- MyEclipse10.6、Maven、svn集成
这几天整理maven,根据开发部署需要,需要把原先的myeclipse下的普通javaWeb工程用maven管理,弄了2天,主要还是在jar包的引入上,总是少- -! 好了,下面记录一下我的安装过程: ...
- iOS \'The sandbox is not sync with the Podfile.lock\'问题解决
iOS \'The sandbox is not sync with the Podfile.lock\'问题解决 HUANGDI 发表于 2015-02-27 09:51:13 问题描述: gith ...
- oracle中to_date详细用法示例(oracle日期格式转换)
这篇文章主要介绍了oracle中to_date详细用法示例,包括期和字符转换函数用法.字符串和时间互转.求某天是星期几.两个日期间的天数.月份差等用法 TO_DATE格式(以时间:2007-11-02 ...
- 问题:FF中把UL下的LI设为左浮动UL的背景色就没有了?
因为容器的子元素设置浮动后, 内容移出了文档流! 解决办法: 1.给个overflow:hidden;作为闭合浮动元素2.设定UL 一个固定的高度 下面是一些与之相关的解决办法,参考文章<那些 ...