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。
5,Socket TCP/UDP通信原理
http://wenku.baidu.com/view/47437d4dcf84b9d528ea7a67.html
loading
6,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的标签,网上有说过只要在布局文件中添加如下代码即可:
- <ListView
- android:id="@android:id/list" 或android:id="@id/android:list"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content">
- </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后,就会执行那个方法。 |
8,onInterceptTouchEvent与onTouchEvent 执行顺序
ViewGroup里的onInterceptTouchEvent默认值是false这样才能把事件传给View里的onTouchEvent.
ViewGroup里的onTouchEvent默认值是false。
View里的onTouchEvent返回默认值是true.这样才能执行多次touch事件。
http://blog.csdn.net/android_tutor/article/details/71930909,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,缺少哪个就添加哪个,缺一不可多余的全部删除】
按照以上做法,虽然library项目不报错了,可是在其它的项目中引用不到library的类,并且library项目本身都无法引用到,如下:
解决办法:
右键项目,build path ----->config build path 在SourceTab栏,addFolder:这一回添加src
在看看项目组织:
没问题了吧。
12,获取当前设备屏幕宽度和高度
- Display display = getWindowManager().getDefaultDisplay();
- display.getWidth();
- <span style="white-space:pre"> </span>display.getHeight();
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验证出错,网上找了些相关资料,说是关闭相关鉴权验证就可以了:
- config.setTLSEnabled(false);
- config.setCompressionEnabled(false);
- config.setSelfSignedCertificateEnabled(false);
- config.setSASLAuthenticationEnabled(false);
- config.setVerifyChainEnabled(false);
参考文章:
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://"
- HttpPost post = new HttpPost("http://gps.google.com/geo");
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位?
方法一:
- float temp = 0.6922224f;
- BigDecimal bd = new BigDecimal(temp);
- bd =bd.round(new MathContext(2));
System.out.println("bd:"+bd); bd = 0.69
显然MathContext中的参数就是保留几位小数点,这种方法返回的是对应类型(float)的结果,如上bd
方法二:
- String parten = "#.#";
- DecimalFormat decimal = new DecimalFormat(parten);
- String str= decimal.format(temp);
- interval = Float.valueOf(str);
结果:
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。
- <ListView
- android:id="@+id/local_groups_list"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:footerDividersEnabled="false" />
2,改变ListView的分割线颜色和宽度,需要在布局中定义android:divider和android:dividerHeight属性。
- <ListView
- android:id="@+id/local_groups_list"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:divider="@color/divider_color"
- android:dividerHeight="1px" />
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类型的键盘:
fuelcity和fuelhighway都是EditText
- fuelCity.setInputType(InputType.TYPE_CLASS_NUMBER|InputType.TYPE_NUMBER_FLAG_DECIMAL);
- fuelHighway.setInputType(InputType.TYPE_CLASS_NUMBER|InputType.TYPE_NUMBER_FLAG_DECIMAL);
- fuelCity.setRawInputType(InputType.TYPE_CLASS_NUMBER|InputType.TYPE_NUMBER_FLAG_SIGNED);
- hway.setRawInputType(InputType.TYPE_CLASS_NUMBER|InputType.TYPE_NUMBER_FLAG_SIGNED);
注意,参数必须要有InputType.TYPE_CLASS_NUMBER,否则会显示全键盘。
24,从SD卡获取一个png,然后转化为Bitmap或是Imageview
- String path = Environment.getExternalStorageDirectory().toString()
- + "/test.png";
- Bitmap mSharedPic = BitmapFactory.decodeFile(path);
- ImageView iv = (ImageView) findViewById(R.id.image_test);
- iv.setImageBitmap(<span style="font-family:Helvetica,Tahoma,Arial,sans-serif">mSharedPic </span><span style="font-family:Helvetica,Tahoma,Arial,sans-serif">);</span>
25 Android string.xml通配符(%$)和转义字符的用法
- <string name="info_address">Address: %1$s(%2$s %3$.3f°,%4$s %5$.3f°,Altitude %6$md)</string>
- <string name="info_address_english">Address: %1$s(%2$s %3$.3f°,%4$s %5$.3f°,Altitude %6$.1ft)</string>
- <string name="info_address_a">Approximate address: %1$s(%2$s %3$.3f°,%4$s %5$.3f°,Altitude %6$.1fm)</string>
- <string name="info_address_ab">Approximate address: %1$s(%2$s %3$.3f°,%4$s %5$.3f°,Altitude %6$.1ft)</string>
XML转义字符
以下为XML标志符的数字和字符串转义符
" (" 或 ")
' (' 或 ')
& (& 或 &)
lt(<) (< 或 <)
gt(>) (> 或 >)
比如:在string.xml中定义如下一个字符串,
<string name="first">大家好,欢迎来到mryang社区。welcome to here!</string>
我想以
大家好,欢迎来到eoeandroid社区。
welcome to here!
两行的形式输出,如何做?加\n,看下面:
<string name="hello">大家好,欢迎来到mryang社区。\nwelcome to here!</string>
android中的空格编码 string.xml前后加空格的技巧
<string name="space">    我来看空格</string>
  这个就代表着空格
1. 遇到如下错误的时候说明你需要在单引号签名加转义字符(\):
Description Resource Path Location Type error: Apostrophe not preceded by \ (in Search' Titles) strings.xml
只要将定义的字符串中的单引号('), 修改为(\')即可
2. 变量文本格式(%s)提示:
Multiple annotations found at this line:
- error: Multiple substitutions specified in non-positional format; did you mean to add the formatted="false"
attribute?
- error: Unexpected end tag string
这是由于新的SDK采用了新版本的aapt(Android项目编译器), 这个版本的aapt编译起来会比老版本更加的严格, 在Android最新的开发文档中描述String的部分,已经说明了如何去设置 %s 等符号, 可以点击去看.
简单解决方法就是:把%s之类的变量格式替换成%1$s, %1表示第一个位置的变量, $s表示为字符串类型
例如:
<string name="welcome_messages">Your First Var is %1$s! You Second Var is %2$d.</string>
26,如何导入第三方library库?
导入的前提是lib已经被添加到了当前workspace里面,这样的话就可以使用相对路径了。
方法一:
直接在project.properties里添加:
- target=android-17
- android.library.reference.1=..\\LibSlidingMenu2
方法二:
手动导入:
导入完成后:
方法二的和一的区别在于路径引用上,如上图,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包名的。