日常问题汇总

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(白色星星的图片)




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值