1.使用xUtils Post请求时,中文内容变成乱码。
a.先确保app端的编码和服务器一样 - xUtils默认是使用UTF-8的
b.在添加参数时请使用
mParams = new RequestParams();
mParams.addBodyParameter("msgContent", msgContent); //有中文的参数
mParams.addQueryStringParameter("token", token); //其它的
2.编译时报错:
Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: android/support/v4/provider/DocumentsContractApi19.class
是因为两个jar包有相同名字的文件,通过 Ctrl + N 可以找到 DocumentsContractApi19.class。 查看是哪两个jar包里的类有冲突。干掉一个就行了
3.打开新的activity 时报错:E/InputDispatcher﹕ channel '42301978 com.test/com.view.HomeActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
这个错误是在打开activity时报的。 原因是mainfest里面activity没有注册
4.Scroll里面嵌套 listview,gridview 显示不全时,需要重写一下view
如果自动滚动到底部,需要在代码里面加一句 listview.setFocusable(false); (在布局文件里面加不起作用)
5.android 沉浸式状态栏(像ios那样的状态栏与应用统一颜色样式):
在activity里面加这两句,一般直接在基类里面加比较好
//透明状态栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
//透明导航栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
6.点击EditTextView 以外的地方,使键盘消失的处理方法(在Activity里面写上如下代码)
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
//这里可以选择在什么时候使键盘消失 触发事件传递机制为: ACTION_DOWN -> ACTION_MOVE -> ACTION_UP
if (ev.getAction() == MotionEvent.ACTION_UP) {
// 获得当前得到焦点的View,一般情况下就是EditText(特殊情况就是轨迹求或者实体案件会移动焦点)
View v = getCurrentFocus();
if (isShouldHideInput(v, ev)) {
hideSoftInput(v.getWindowToken());
}
}
return super.dispatchTouchEvent(ev);
}
/**
* 根据EditText所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘,因为当用户点击EditText时没必要隐藏
*
* @param v
* @param event
* @return
*/
private boolean isShouldHideInput(View v, MotionEvent event) {
if (v != null && (v instanceof EditText)) {
int[] l = { 0, 0 };
v.getLocationInWindow(l);
int left = l[0], top = l[1], bottom = top + v.getHeight(), right = left
+ v.getWidth();
if (event.getX() > left && event.getX() < right
&& event.getY() > top && event.getY() < bottom) {
// 点击EditText的事件,忽略它。
return false;
} else {
return true;
}
}
// 如果焦点不是EditText则忽略,这个发生在视图刚绘制完,第一个焦点不在EditView上,和用户用轨迹球选择其他的焦点
return false;
}
/**
* 多种隐藏软件盘方法的其中一种
*
* @param token
*/
private void hideSoftInput(IBinder token) {
if (token != null) {
InputMethodManager im = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
im.hideSoftInputFromWindow(token,
InputMethodManager.HIDE_NOT_ALWAYS);
}
}
7.使用Xutils 时,发请求添加参数时
发送GET请求: params.addQueryStringParameter(key, value);
发送POST请求: params.addBodyParameter(key, value);
发送POST请求,没有参数名,只有一段JSON字符串:
params.addHeader("Content-Type", "application/json");
try {
params.setBodyEntity(new StringEntity(mHttpEvent.mJsonData,"utf-8"));
} catch (UnsupportedEncodingException e) {
}
如果用不了 setBodyEntity,是因为
Android 6.0 使用 Apache HttpClient,http://blog.csdn.net/liuhongwei123888/article/details/50100697
8.找到代码中的所有中文: 快捷键Crtl+Shift+F打开查找功能:^((?!(\*|//)).)+[\u4e00-\u9fa5]
9.类转json 的时候,有的时候会把大写转成小写。 解决方法: 把private 类型转为 public 类型,并删除所有 get set 方法
10.gson 转类:new GsonBuilder().create().fromJson(data, UserFamilyDoctor.ServiceInfo.class);
gson 转类集合: list = new GsonBuilder().create().fromJson(data, new TypeToken<List<Doctor.ListItem>>() {}.getType());
11. 报错: You need to use a Theme.AppCompat theme (or descendant) with this activity.
解决: 在Manifest 里面给相应的activity 加上 android:theme="@style/Theme.AppCompat.NoActionBar"
12.报错:java.lang.NoSuchFieldError: No static field tv_tool_left of type I in class Ldoctor/(findViewById 时报的错)
解决: 把所在的xml的名字改一下。
13.使用 intent Serializable接口传递对象时,报错:java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = doctor.kmwlyy.com.recipe.Model.RecipeLModifyBean)
解决:类的内部如果有其它类,也需要继承 Serializeable接口 才行。
14.holder.tv_age.setText( patientListBean.MemberAge);
报错:android.content.res.Resources$NotFoundException: String resource ID #0x1b
参考:http://blog.csdn.net/pengjianbosoft/article/details/7290371
解决:MemberAge 是int 型的,需要字符型的。然而错误提示不是这个...
15.ListView 或 ScrollView 嵌套 listView的时候,重写一下listView就行了,网上一大堆。 值得注意的是,自定义的listview 在xml里面的 宽一定要 match_parent,不然仍可能出现显示不全的问题
16.使用Rating Bar的时候,想显示完整的星星,第二个里面写 full(完整星星的图片), 想要半星这里就写blank(白色星星的图片)