1、android通过get方式传递中文参数到java web服务器(tomcat)出现乱码
解决方法:
android使用URLEncoder编码
String greenCityName ;
greenCityName = URLEncoder.encode(greenCityName ,"UTF-8");
web端使用
String greenCityName =request.getParameter("greenCityName");
greenCityName= new String(greenCityName.getBytes("ISO8859-1"),"UTF-8");
2、android点击listview的item项没反应
如listView.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent, View view,
int position, long id)
{
viewItemDetail(position);
}
});
错误原因:listview的元素里不能包括button、imageButton这些点击事件按钮,把它换成imageView就ok了
3、pageViewer的使用需要引用android-support-v4.jar这个特效包,把它放在libs文件夹下,如果libs没有自己手动添加,并build path到自己的项目中。在项目中遇到,page有2页,用AsyncTask异步获取2个列表,但有时第一个列表的数据无法正常显示,但web服务器端却执行了获取列表操作,故改成了第一个直接获取,后面的异步操作解决。暂时就这样解决,应该有更好的方法。
4、android开发百度地图,一直提示您的网络出错啦。 原因是 :公司无线网络wifi的问题,在公司无线网络中一直只显示网格,不显示图像,回到宿舍显示正常。坑,害我检查代码了好久。
5、android显示web后台fckeditor在线编辑器的内容,因为fckeditor保存到数据库的内容有html标签,故可以用
(Html.fromHtml(value.getString("servicecontent"),imageGetter, null));方法
Bundle value; value=this.getIntent().getExtras();
TextView detailContent ;
detailContent.setText(Html.fromHtml(value.getString("servicecontent"),imageGetter, null)); final Html.ImageGetter imageGetter = new Html.ImageGetter() { public Drawable getDrawable(String source) { Drawable drawable=null; URL url; try { url = new URL(Config.common_url+source); drawable = Drawable.createFromStream(url.openStream(), ""); } catch (Exception e) { e.printStackTrace(); return null; } drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); return drawable; }; };
Config.common_url
就是http://ip:port信息。
后来我把fckeditor换成了kindEditor,发现kindEditor可以开启上传域名模式。
后来,发现采用textview加载网页内容很慢,故换成webview来实现,且更简单。
WebView content;
content.loadDataWithBaseURL(null,bun.getString("content"), "text/html", "UTF-8", null);
content.setBackgroundColor(0x00000000);
6、在android4.0以后的版本,不要把网络这些耗时的操作放在ui线程里,可以使用handler或者AsyncTask这些异步操作,虽然可以用
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads().detectDiskWrites().detectNetwork()
.penaltyLog().build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects().penaltyLog().penaltyDeath()
.build());
解决这个问题,但个人不推荐。
另外,webView操作应该放在ui线程里,虽然异步操作也没什么问题,但logout会有警告信息。
7、二维码生成,android使用很简单,使用google提供的zxing就能解决这个问题,在googlecode下载zxing包,引用core包,下面的代码就能实现通过字符串生成二维码。
import com.google.zxing.BarcodeFormat; import com.google.zxing.MultiFormatWriter; import com.google.zxing.WriterException; import com.google.zxing.common.BitMatrix; import android.graphics.Bitmap; public class Dcode { /** * 用字符串生成二维码 * @param str * @author xiaoliouc * @return * @throws WriterException */ public static Bitmap Create2DCode(String str) throws WriterException { //生成二维矩阵,编码时指定大小,不要生成了图片以后再进行缩放,这样会模糊导致识别失败 BitMatrix matrix = new MultiFormatWriter().encode(str,BarcodeFormat.QR_CODE, 300, 300); int width = matrix.getWidth(); int height = matrix.getHeight(); //二维矩阵转为一维像素数组,也就是一直横着排了 int[] pixels = new int[width * height]; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { if(matrix.get(x, y)){ pixels[y * width + x] = 0xff000000; } } } Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); //通过像素数组生成bitmap,具体参考api bitmap.setPixels(pixels, 0, width, 0, 0, width, height); return bitmap; } }
9、在两个Activity跳转时,由于第二个Activity在启动时加载了较多数据,就会在启动之前出现一个短暂的黑屏时间,解决这个问题比较简单的处理方法是将第二个Activity的主题设置成透明的,这样在启动第二个Activity时的黑屏就变成了显示第一个Activity界面。这个分两步完成:
第一步:xxx/res/values/styles.xml中加入自定义Activity的Theme,如下所示:
[html] <style name="Transparent" parent="android:Theme.Light">
<!--将Activity的Theme设置成透明-->
<item name="android:windowIsTranslucent">true</item>
</style>
<style name="Transparent" parent="android:Theme.Light">
<!--将Activity的Theme设置成透明-->
<item name="android:windowIsTranslucent">true</item>
</style>第二步:在AndroidManifest.xml中将第二个Activity的"android:theme"属性设置成刚才自定义的主题样式。如下所示:
[html] <activity
android:name="com.yutao.customer.CustomerActivity"
android:label="@string/app_name"
android:theme="@style/Transparent">
<activity
android:name="com.yutao.customer.CustomerActivity"
android:label="@string/app_name"
android:theme="@style/Transparent"> 到此应该就不会出现那个讨厌的黑屏了。
详细出处参考:http://www.jb51.net/article/38373.htm
未完待续