1.控制台输出:called unimplemented OpenGL ES API
调用了未实现的OpenGL ES API函数,一般由于导入的第三方库如地图库,里面有用到OpenGL,但是模拟器的硬件默认是没有这个的,所以需要我们编辑模拟器Emulation Options选项勾选 Use Host GPU 然后重启模拟器再尝试,如果还是这个错误,那么我们只好用真机测试了。
2.控制台输出:
这个错误是由于真机里已经存在一个相同签名的应用程序,最简单是真机先卸载掉,然后再run。
3.高德地图android版本,导入地图库,项目打开后报错:
06-05 09:10:46.718: W/dalvikvm(932): Unable to resolve superclass of Lcom/amapv2/cn/apis/BasicMapActivity; (29)
06-05 09:10:46.718: W/dalvikvm(932): Link of class 'Lcom/amapv2/cn/apis/BasicMapActivity;' failed
06-05 09:10:46.888: E/AndroidRuntime(932): FATAL EXCEPTION: main
06-05 09:10:46.888: E/AndroidRuntime(932): java.lang.ExceptionInInitializerError
06-05 09:10:46.888: E/AndroidRuntime(932): at java.lang.Class.newInstanceImpl(Native Method)
06-05 09:10:46.888: E/AndroidRuntime(932): at java.lang.Class.newInstance(Class.java:1319)
06-05 09:10:46.888: E/AndroidRuntime(932): at android.app.Instrumentation.newActivity(Instrumentation.java:1054)
这个错误是由于你的android开发环境adt升级到最新版本导致的错误,属于你Android开发环境问题,选中你的项目,右击选择“Properties”---------》“Java Build Path”--------》“Order and Export” ,把“Android Private Libraries”选项打上勾,再次编译就可以了。
4.android横竖屏锁定:
xml文件中设置:
要实现这个目的,只需要在AndroidManifest.xml里声明Activity的时候加上一个属性:android:screenOrientation,属性取值landscape为固定横屏、portrait为固定纵屏幕。
代码:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE););//强制为横屏
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//竖屏
============延伸========
屏幕会自动切换时,默认状态的应用程序,会重新调用onCreate,相当于重新启动了一次应用程序。同时,layout可能因为横屏带来不能合理适配的问题。为了解决旋屏和键盘切换引起的程序重启问题,还需要增加一个属性:android:configChanges。这个属性可以理解为一个监听器,它将拦截旋屏和键盘切换事件,阻止程序重启而变为回调onConfigurationChanged方法。这里常用的属性取值为:keyboardHidden|orientation。
Socket TCP/UDP通信原理http://wenku.baidu.com/view/47437d4dcf84b9d528ea7a67.html
5,android 谷歌地图开发时,控制台输出:
也就是调试时真机运行后地图显示空白。造成这种现状的原因是由于 google api key配置错误。
Api key分为两种情况
一种是使用debug keystore生成的api key
一种是使用release keystore生成的api key
不同的api key使用不同的sha1字符生成 ,所以如果是调试,如果使用android自带的debug keystore,一定要是当时生成debug api key的那个 keystone。如果是release,自己的keystore来签名,APP配置文件就用 release下生成的api key。不能混用。否则显示不了地图。
解决办法:
1,把debug keystone替换成生成 api key 的那个:
2,APP配置文件里要启用debug 的 key:
6,Android Your content must have a ListView whose id attribute is 'android.R.id.list'错误
错误提示:Your content must have a ListView whose id attribute is 'android.R.id.list'
对于以上错误,其实可能是因为我们要实现对ListView中setOnItemClick的事件监听而去继承了LiseActivity,但是却没有ListView的标签,网上有说过只要在布局文件中添加如下代码即可:
7,view的onFinishInflate()何时调用的?
比如:自定义一个view叫myView ,路径是,com.test.view.MyView,此view是继承LinearLayout,定义的布局文件是my_view.xml 里面内容是: <com.test.view.MyView> <xxxx /> </com.test.view.MyView> 当在使用的时候,可以这样使用 MyView mv = (MyView)View.inflate (context,R.layout.my_view,null); 当加载完成xml后,就会执行那个方法。 |
ViewGroup里的onInterceptTouchEvent默认值是false这样才能把事件传给View里的onTouchEvent.
ViewGroup里的onTouchEvent默认值是false。
View里的onTouchEvent返回默认值是true.这样才能执行多次touch事件。
http://blog.csdn.net/android_tutor/article/details/7193090
9,Jar mismatch! Fix your dependencies
这个问题是我们添加了多个开源应用例如ABS 或者 PageIndicator 由于他们都包含 support V4.jar, 或者你的工程目录里 libs 中包含这个包,所以冲突发生了,他们各自的签名SHA 不一致,解决方案:
去掉某一个libs里面的supportv4.jar,直接在引用 external jar using build path menu > add external jar,在目录外选一个(supportV4.jar)即可。
10,明明卸载掉了豌豆荚,可是.apk文件还是显示 wandoujia.file,如何去除?
开始=运行=输入CMD回车 输入assoc .apk=null (记得assoc后面有个空格和点) 回车即可。
11,gen already exists but is not a source folder. Convert to a source folder or rename it.
解决办法:
1. Right click on the project and go to "Properties" //鼠标右键点击项目,然后选中Properties
2. Select "Java Build Path" on the left //选择java Build Path
3. Open "Source" tab // 打开源文件的tab栏
4. Click "Add Folder..." //点击添加文件夹
5. Check "gen" folder and click Ok and Ok again //选中gen目录 然后点确定 应该就可以了【保证source下是gen和src,缺少哪个就添加哪个,缺一不可多余的全部删除】
6. Again right click on the project and in the "Andriod Tools" click on "Fix Project Properties" //右键点击项目 选择 Andriod Tools 点击 Fix Project Properties
按照以上做法,虽然library项目不报错了,可是在其它的项目中引用不到library的类,并且library项目本身都无法引用到,如下:
解决办法:
右键项目,build path ----->config build path 在SourceTab栏,addFolder:这一回添加src
在看看项目组织:
没问题了吧。
12,获取当前设备屏幕宽度和高度
13,项目工程下的lint.xml什么作用?
代码性能改进工具,Lint会自动扫描现有工程的Java和xml文件,给出性能优化改进建议,最终将会在Android的工程目录下生成lint.xml文件。简单点说就是检查项目里不推荐的代码文件。
14,无论真机还是模拟器运行项目,总是闪退,后台报错Class找不到:
解决:找半天,clean好多次,都解决不了,一开始以为少了相关的库文件或路径不对,后来才发现,只要把R文件里的所有包下的文件全部remove掉,让系统自动重新生成,就可以拉。
15,ClassNotFoundException: Didn't find class "org.osmdroid.views.MapView" on path: /data/app/net.yu-2.apk
这个错误是指apk打包时发现:org.osmdroid.views.MapView找不到,但是我们在代码里,引用此路径,就能找到MapView,后来终于想到:
这个jar包在Android private Libraries里
build config里应该勾选这个,否则打包时不会添加android Private Libraries里的库
16,基于XMPP的android连接openfile服务时出错:SASL authentication DIGEST-MD5 failed
出现这个问题是由于客户端连接openfile时SASL验证出错,网上找了些相关资料,说是关闭相关鉴权验证就可以了:
参考文章:
http://blog.sina.com.cn/s/blog_7e3fa7ec0101894b.html 基于XMPP协议的Android IM研究
http://blog.csdn.net/onelight1997/article/details/6301289 gloox 链接openfire服务器问题解决办法
http://www.oschina.net/question/872914_80498
17,使用HttpClient时:Target host must not be null, or set in parameters
出现这个问题,原因是url,连接地址不完整, 必须加上"http://"
18,真机调试时错误:INSTALL_FAILED_INSUFFICIENT_STORAGE
出现这个问题,原因是设备(真机或模拟器)的内容空间不足,APP无法安装,如过用的手机,删除一些没用的软件腾出一些空间来,如用的是模拟器,设置device的内存更大一些。
19,如何把工程项目下的文件归档?(use as Source Folder)
(我们有时候看项目下会有上图中的文件夹打开后都是一层包一层(树状)的并不像com.ka.tradk这样,原因在于当前的包不是Source Folder)
添加完后感觉特别混乱,还是有错误,就看本文第11个截图的解决办法,右键点击工程,选择 "Properties",选择左边的 "Java Build Path",打开 "Source" 标签面板,点击 "Add Folder...",删除没用的,勾选 "gen和src" 文件夹,点击OK,点击YES,再点击OK。
20,在java中,如何四舍五入保留小数点x位?
方法一:
System.out.println("bd:"+bd); bd = 0.69
显然MathContext中的参数就是保留几位小数点,这种方法返回的是对应类型(float)的结果,如上bd
方法二:
System.out.println(interval); interval = 0.7
显然这种方法关键的就是parten参数, #.##就是保留两位小数点并且四舍五入,这种方法返回的是字符串类型。
21,使用eclipse打包时:Export aborted because fatal lint errors were found
解决办法:
1,点中项目右键 Properties
2,左边Android列表打开 Android Lint Preference,如下图:
3,在上图右上角,点击文字超链接,Configure workspace settings,如下图:
4,将"Run full error check when exporting app and abort if fatal errors are found "前的勾去掉,点击Apply再点击OK,全部保存。
5,再次选中项目,鼠标右键,AndroidTools-> Clean Lint Markers。稍等片刻,等待APP清除并重新生成Lint.xml文件。
这个时候再打包,就不会再有错误了。
22,listview如何自定义或不显示分割线?
1,ListView中每个Item项之间都有分割线,设置android:footerDividersEnabled表示是否显示分割线,此属性默认为true。
2,改变ListView的分割线颜色和宽度,需要在布局中定义android:divider和android:dividerHeight属性。
3,也可以设置listview不显示分割线,然后给每一个listview item 的底部添加一个imageview,来充作分割线,这也是一种方法。
23,android:inputType="numberSigned"和代码EditText中setInputType以及setRawInputType区别
android中inputType属性在EditText输入值时启动的虚拟键盘的风格有着重要作用。这也大大的方便的操作。有时需要虚拟键盘只为字符或只为数字。所以inputType尤为重要。
android:inputType="none"
android:inputType="text"
android:inputType="textCapCharacters"
android:inputType="textCapWords"
android:inputType="textCapSentences"
android:inputType="textAutoCorrect"
android:inputType="textAutoComplete"
android:inputType="textMultiLine"
android:inputType="textImeMultiLine"
android:inputType="textNoSuggestions"
android:inputType="textUri"
android:inputType="textEmailAddress"
android:inputType="textEmailSubject"
android:inputType="textShortMessage"
android:inputType="textLongMessage"
android:inputType="textPersonName"
android:inputType="textPostalAddress"
android:inputType="textPassword"
android:inputType="textVisiblePassword"
android:inputType="textWebEditText"
android:inputType="textFilter"
android:inputType="textPhonetic"
//数值类型
android:inputType="number"
android:inputType="numberSigned"
android:inputType="numberDecimal"
android:inputType="phone"//拨号键盘
android:inputType="datetime"
android:inputType="date"//日期键盘
android:inputType="time"//时间键盘
在代码中设置的方法:setInputType和setRawInputType的区别,前者是以TEXT类型的键盘,后者是单独Number类型的键盘:
24,从SD卡获取一个png,然后转化为Bitmap或是Imageview
25 Android string.xml通配符(%$)和转义字符的用法
StringFormat通配符
<string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>
在这个例子中,这个格式化的字符串有2个参数
属性值举例说明
%n$ms:代表输出的是字符串,n代表是第几个参数,设置m的值可以在输出之前放置空格
%n$md:代表输出的是整数,n代表是第几个参数,设置m的值可以在输出之前放置空格,也可以设为0m,在输出之前放置m个0
%n$mf:代表输出的是浮点数,n代表是第几个参数,设置m的值可以控制小数位数,如m=2.2时,输出格式为00.00
在程序中按照下面的方法来根据参数来格式化字符串:
Resources res = getResources();
String text = String.format(res.getString(R.string.welcome_messages), username, mailCount);
XML转义字符
26,如何导入第三方library库?
导入的前提是lib已经被添加到了当前workspace里面,这样的话就可以使用相对路径了。
方法一:
直接在project.properties里添加:
方法二:
手动导入:
导入完成后:
方法二的和一的区别在于路径引用上,如上图,1,2是方法一来引用的;3,4是方法二引用的。
27,R cannot be resolved to a variable
遇到这种情况可以看一下RES里是否有错误,如果有错误,必然导致R无法成功生成,所以先解决所有资源文件的错误。
1. 检查Android 的SDK是否丢失需要重新下载,检查build path
2. 确保class没有import Android.R;
3, 错误class引用的layout的xml文件没有错误
4. 检查AndroidManifest.xml文件,里边的package,layout配置文件,strings.xml等的字符串全部书写正确
5. layout的xml文件中引用的strings.xml中的字符串拼写完全正确
6. 在layout 的xml文件手写添加一个控件,看id能否在R.java中自动生成,如果不能,那很大可能就是这个layout 的xml文件有问题,查看格式是否使用正确,或者包含什么非法字符串,或者调用到了不正确的字符串,等等,可以使用排除法,挨个去掉控件,直到发现error message消失或者id能在R.java中自动生成。
7. 删掉gen文件夹,使R.java重新自动生成一次,如果不能生成,继续检查layout的xml文件是否有如上不易发觉的问题
8. Clean project ,重新build,或者重新import project。
9. 重启eclipse。
28,当import一个新的android项目时,项目名称上出现一个红色的感叹号,程序不能运行
右键项目---BuildPath---Configure Build Path, 切换libraries标签页,你应该会看到Android Dependencies里红色的X号,也就是说某一个jar包现在不可用了,查看一下是否jar包路径有变化,修复了就没问题了。
还有在我们引用第三方jar包或是自己写的support支持库时,一定记得要在project.properties里添加: android.library=true 否则,其它项目引用此库时,是无法生产库名.jar包名的。
以下为引用:
你用myeclipse新建 web工程, 在工程目录下会生成一个 .classpath 配置文件, 里面是你工程里面引用的jar的配置。这个.classpath 对你的web工程没有什么影响
其实是给 myeclipse 识别的。 你说的这种情况是因为 .classpath 文件里面配置引用了某个jar,但是实际上你的 lib 里面并没有这个jar 所以才会有红色的提示。
你不用拿.classpath文件和你的jar一个个去找, 你现在打开MyEclipse 右键单击你的web工程,找到 Build Path > Configure Build Paht... > 然后上面有几个选项卡找到 Libraries。 这里看到的就是你工程里面引用的 所有的 jar , 看看是不是在某个jar图标上有个很小的黄色的感叹号?
如果有的话就没错了, 先选中这个jar, 点击右边的 Remove > 点击OK 等待几秒, 现在web工程上面的红色XX是不是没有了,哈哈。 解释一下: 黄色的感叹号的jar,表示.classpath配置文件引用了jar, 但是实际上lib里面没有这个jar。
29,如何实现屏幕截图(Mapview)
直接附上实现代码,截取当前屏幕,并保存到手机内。
实现:
30,android-support-v4.jar混乱冲突
这是由于不同的library同时引用了android-support-v4.jar,但是他们不是同一个文件,SHA-1不相同,系统只允许libraries must be the same,所以我们删除那个不相同的jar包,把其余的使用同一个的jar拷贝到library里就可以了。
31,eclipse中git插件的cannot open git-upload-pack问题
我们在eclipse上使用插件egit向代码服务器push或pull代码时,有时候会发现出现cannot open git-upload-pack这个问题。一般引起这个问题的原因有两个:
一、网络问题,确定你可以访问自己所要操作的代码仓库地址!【这是最关键的,我就是折腾半天发现公司关闭了地址的外网访问】。
二、eclipse中git插件的配置问题。
打开eclipse中的windows-->Preferences-->Team-->Git-->Configuration-->User Settings.然后点Add Entry新建一个键值对,输入http.sslVerify=false。如图所示:
32,Fragment出现异常:java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
在使用Fragment保存参数的时候,可能是因为需要保存的参数比较大或者比较多,这种情况下页会引起异常。比如代码
分析原因:你并不需要系统保存的参数,只要你自己设置的参数能够传递过去,在另外一个Fragment里能够顺利接受就行了,现在android里提供了另外一种形式的提交方式commitAllowingStateLoss(),从名字上就能看出,这种提交是允许状态值丢失的。到此问题得到完美解决,值的传递是你自己控制的。
这里也说一下另外一个问题,bitmap 也可以通过Bundle传递的,使用putParacelable就可以了。
33,conversion to dalvik format failed with error 1
在我们Android Tools--Export Signed Application Package 进行签名打包时会遇到这个问题,不是特别严重的问题,最简单的是刷新一下自己的工程,clean一下、再次打包,如果还不行就重新打开eclipse试试。
project.properties里Target改变一个其他的版本,再变回来保存一下(相当于刷新的操作)这样也能起到清理的作用。
34,在版本更新时,新版本数据库增加了字段,安装直接替换apk运行后报错(数据库字段找不到),除非卸载旧版本再安装新的
主要是因为新增加了字段,在当前版本里查找字段时出错了,所以要切记一个问题,当更新版本时添加或删除了字段,数据库version一定要更换,也就是说新版本运行时要让系统知道数据库有更新,要remove db 然后再创建db,如下所示:
35,android:layout_weight用法
layout_weight 用于给一个线性布局中的诸多视图的重要度赋值。默认为零,意思是需要显示 多大的视图就占据多大的屏幕空 间。若赋一个高于零的值,则将父视 图中的可用空间分割,分割大小具体取决于每一个视图的layout_weight 值以及该值在当前屏幕布局的整体 layout_weight值和在其它视图屏幕布局的layout_weight值中所占的比率而定。
举个例子:比如说我们在 水平方向上有一个文本标签和两个文本编辑元素。 该文本标签并无指定layout_weight值,所以它将占据需要提供的最少空间。 如果两个文本编辑元素每一个的layout_weight值都设置为1,则两者平分在父视图布局剩余的宽度(因为我们声明这两者的重要度相等)。如果两个文本编辑元素其中第一个的layout_weight值设置为1,而第二个的设置为2,则剩余空间的三分之二分给第一个,三分之一分给第二个(数值越小,重要度越高)。
36,xml文件中的转义字符
HTML中<, >,&等有特别含义,(前两个字符用于链接签,&用于转义),不能直接使用。使用这三个字符时,应使用他们的转义序列,如下所示:
& 或 & |
& |
和 |
|||
< 或 < |
< |
小于号 |
|||
> 或 > |
> |
大于号 |
|||
" |
" |
双引号 |
|
||
|
|
空格 |
|||
© |
© |
版权符 |
|||
® |
® |
注册符 |
前者为字符转义序列,后者为数字转义序列。数字转为字符对应的ASCII码值。例如 & lt; font >显示为,<font>,若直接写为则被认为是个链接签。
需要说明的是:
a. 转义序列各字符间不能有空格;
b. 转义序列必须以";"结束;
c. 独立的&不被认为是转义开始;
d.区分大小写。
另一个需要转义的字符是引号,他的转义序列为"" "或"""
HTML使用的字符集是ISO &859 Larin-1字符集,该字符集中有许多标准键盘上无法输入的字符。对这些特别字符只能使用转义序列。
XML转义字符
不合法的XML字符必须被替换为相应的实体。
如果在XML文件中使用类似"<" 的字符, 那么解析器将会出现错误,因为解析器会认为这是个新元素的开始。所以不应该像下面那样书写代码:
<message>if salary < 1000 then</message>
为了避免出现这种情况,必须将字符"<" 转换成实体,像下面这样:
<message>if salary < 1000 then</message>
下面是五个在XML文件中预定义好的实体:
< |
< |
小于号 |
> |
> |
大于号 |
& |
& |
和 |
' |
’ |
单引号 |
" |
" |
双引号 |
实体必须以符号"&"开头,以符号";"结尾。
注意: 只有"<" 字符和"&"字符对于XML来说是严格禁止使用的。剩下的都是合法的,为了减少出错,使用实体是个好习惯。
37,如何读取当前项目版本信息(version name和version code)?
38,如何判断当前是否有网络以及使用的网络环境(2G、3G或WIFI)?
39,This tag and its children can be replaced by one <TextView/> and a compound drawable
当我们在xml里布局的时候,有时会遇到这样的一段黄色警告,简而言之就是说,我们可以优化一些(TextView可以直接添加图片)
40,SQlite 简单 事物处理
最近在做应用程序的集团版本,初始化时需要批量的向sqlite中插入大量数据,单独的使用for+Insert方法导致应用响应缓慢,因为 sqlite插入数据的时候默认一条语句就是一个事务,有多少条数据就有多少次磁盘操作。应用有的账号有500+记录,需要500多次循环,insert。
解决方法:
添加事务处理,把500+条插入作为一个事务
我们使用SQLite的事务进行控制:
db.beginTransaction(); //手动设置开始事务
try{
//批量处理操作
for(Collection c:colls){
insert(db, c);
}
db.setTransactionSuccessful(); //设置事务处理成功,不设置会自动回滚不提交
}catch(Exception e){
MyLog.printStackTraceString(e);
}finally{
db.endTransaction(); //处理完成
}
1.使用SQLiteDatabase的beginTransaction()方法可以开启一个事务,程序执行到endTransaction() 方法时会检查事务的标志是否为成功,如果程序执行到endTransaction()之前调用了setTransactionSuccessful() 方法设置事务的标志为成功则提交事务,如果没有调用setTransactionSuccessful() 方法则回滚事务。
2.下面两条SQL语句在同一个事务中执行:
41,使用googleMap如何获取两点(经纬度之间的距离)
方法一:
在没有类似android的Location的distanceBetween方法开采用如下代码获取:
42,Android 之Gson如何使用
Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。
jar和源码下载地址: http://code.google.com/p/google-gson/downloads/list
实体类:
43,Hashmap如何遍历所有的key?
方法一:
44,Android中Parcelable注意事项
在实例化对象时,如果实现了Parcelable接口,一定注意两个方法中,get/set属性的顺序不要错了,否则会造成数据不一致。
45,Fragment异常:not attached to Activity
传送门:http://blog.csdn.net/walker02/article/details/7995407
46,Android自带Location和百度DistanceUtil计算两点间距离
输出:
01-21 14:33:33.060: I/System.out(6935): Location:57.310047
01-21 14:33:33.060: I/System.out(6935): baidu:56.9168298996976
可以看出百度和Android自带的算法计算出来的差距不是很大,其实出现不一样的结果,主要是算法过程中,椭球中的地球长半径数据不一致(WGS84和天朝的标准,你懂的),导致差异,具体可看如下算法公式。
47,国际国内通用两点间(经纬度)的距离算法:
48,Unable to execute dex: Java heap space Java heap space
修改eclipse目录下面额eclipse.ini文件
把第一行添加
-vm
C:\Program Files\Java\jdk1.6.0_24\bin\javaw.exe (你jdk的目录)
修改
-Xms128m
-Xmx512m
修改
--launcher.XXMaxPermSize
512m
49,如何判断后台的service是否在运行?
50,android:process=":remote"有啥用?
android:process=":remote",代表在应用程序里,当需要该service时,会自动创建新的进程。而如果是android:process="remote",没有“:”分号的,则创建全局进程,不同的应用程序共享该进程。
51,sdk manager更新失败,显示Download interrupted: read timed out
解决办法:
sdk manager左上角选tools,再选options,将下面的force https......勾选上,重启sdk manager再试一下,应该可以成功。
52,eclipse中shift+ctrl+(Format)偶尔失效
其实是和别的软件的快捷键产生了冲突,具体可以看看最近安装了什么软件,看一下其热键。
在"Window"->"Preferences"->"General"->"Keys"中可以看到所有快捷键,看看你所用的快捷键是否被修改了,要是修改了的话点击"Restore Defaults"即可,或是把format的热键改成别的。
【注意】搜狗输入法是最喜欢使用shift+ctrl+字母或数字作为快捷键的,建议打开输入法设置属性--按键-快捷按键,把相关没用的全部取消了。
53,eclipse里找不到AVDManager 或Android SDK Manager的图标(已安装ADT插件)
1,查看当前的ADT是否是最新版本的,不是的话建议升级为最新版-help-install new software ,add https://dl-ssl.google.com/android/eclipse/
2,ADT没问题的话,打开Window-Customize Perspective,切换到Command Groups Availability 勾选上Android相关的选项,这个标签页就是配置工具栏要显示的功能列表,shortcuts标签页是设置比如NEW或show view时所需要显示的功能。
54,再按一次退出程序的实现方法
故而,null==name,是在C语言的编程习惯引入进来的。当然了,在java里面,if(name=null)是会出现编译错误的,现在就不用担心这个了。但是,良好的编程习惯,还是写成null==name的好。http://bbs.csdn.net/topics/360174215
56,Only the original thread that created a view hierarchy can touch its views.
android中相关的view和控件不是线程安全的,我们必须单独做处理。我直接在button的onclick事件里进行了for循环,循环里直接进行了:
mHandler.removeCallbacks(runnable);
mHandler.post(runnable);
所有更新UI相关的操作,如果在子线程里进行,需要使用handler机制,在handler内更新。
57,Only the original thread that created a view hierarchy can touch its views
android中相关的view和控件不是线程安全的,我们必须单独做处理。简而言之,在子线程里进行了UI更新的相关操作,所以要使用Handler机制。
58,手机号正则表达式"^1[3|4|5|8]\\d{9}$"
^ 首字母( 表示匹配一行的开始,既这个验证从^之后开始,第一位数就是1 )
这个需要真机已经进行root过了,然后在手机上装上R.E 管理器(或类似软件),将/data/data的权限修改为可读可写可执行,然后,就可以在eclipse中展开了。
67,如何把android textView字体大小固定写死,而不随系统设置字体大小的改变而改变?
sp是字体的单位,dp一般是宽,高等的单位,但是不同的机器有不同的密度,hdpi,mdpi,ldpi,xhdpi,在这些密度下,以sp、dp为单位,那么最终都会转换成px单位下的值,所以,用px为单位就是固定值。
68,EditText默认时不弹出软键盘的方法
方法一:
在 AndroidMainfest.xml中选择哪个activity,设置windowSoftInputMode属性为 adjustUnspecified|stateHidden
< activity android:name=".Main"
android:label="@string/app_name"
android:windowSoftInputMode="adjustUnspecified|stateHidden"
android:configChanges="orientation|keyboardHidden">
< intent-filter>
< action android:name="android.intent.action.MAIN" />
< category android:name="android.intent.category.LAUNCHER" />
< /intent-filter>
< /activity>
方法二:
让 EditText失去焦点,使用EditText的clearFocus方法
例如:
EditText edit=(EditText)findViewById(R.id.edit);
edit.clearFocus();
方法三:
强制隐藏Android输入法窗口
EditText edit=(EditText)findViewById(R.id.edit);
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(edit.getWindowToken(),0)