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;
}
}
8、android应用新浪、腾讯微博分享, 不管是其中哪一种,需要再开发者平台创建应用,申请key,审核资料等步骤,如果不审核身份,那只有通过添加测试账号测试,但不知道怎么回事,一直出问题,还是老老实实上传身份证件审核通过吧,暂时还没做,但思路算是清晰了。
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
未完待续