Java Web和Android出现的一些问题及解决方法记录

   这段时间同时做安卓和Java Web后端,出现和解决一些小问题。记录一下:

1.

java.sql.SQLException: Data truncated for column 'dead_time' at row 1

解决:数据被截断,请检查表字段类型和待添加的数据类型是否一致。我这里dead_time类型使用了int,肯定出问题。

2.

org.json.JSONException: Value [] at tasks of type java.lang.String cannot be converted to JSONArray

jsonObject.put("key", jsonArray)和jsonObject.put("key", jsonArrayString)是不一样的,后者getJsonArray会出现错误,因为后者为字符串。

3.

注意:Gson序列化时默认会自动将为null的项给清除;
Gson.toJson()方法是转为了字符串,注意put时可能要转为JSONObject或JSONArray,否则字符串是不能直接get为JSONObject或JSONArray的。

4.

Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.crowd_sourcing.llj.crowdsourceclient/com.crowd_sourcing.llj.crowdsource.activity.CSCommonActivity}; have you declared this activity in your AndroidManifest.xml?

解决:这个不用说,记得在AndroidManifest.xml中声明用到的Activity。

5.

注意:setText为int时特别要注意使用String.valueOf()方法转为字符串,也可以是使用intval+""转为字符串。否则会识别为资源ID,出现异常。

6.

FATAL EXCEPTION: main
                                                                                          java.lang.IllegalStateException: Could not find method onClick(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatTextView with id 'tv_task_detail'

解决:Android XML文件里面View的onClick属性只能用于有context的组件上,一般就是Activity,不能用在Fragment的页面中,因为Fragment没有自己的context。乖乖改成:view.findViewById(R.id.btn_bid_for_task).setOnClickListener(this);

7.

FATAL EXCEPTION: main
                                                 java.lang.NullPointerException
                                                     at android.support.v7.widget.RecyclerView.findMinMaxChildLayoutPositions
解决:这个我忘了什么原因造成的了,空指针异常,不用说,肯定是没正常初始化。

8.

注意:Android菜单栏右上角不显示,按物理菜单键会在下方滑出,可能和物理菜单按键有关;

9.

FATAL EXCEPTION: main
                                                   java.lang.RuntimeException: Unable to get provider droidninja.filepicker.utils.FilePickerProvider: java.lang.ClassNotFoundException: Didn't find class "droidninja.filepicker.utils.FilePickerProvider" on path: DexPathList[dexElements=[zip file "/data/app/com.crowd_sourcing.llj.crowdsourceclient-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.crowd_sourcing.llj.crowdsourceclient-2, /vendor/lib, /system/lib]]

问题:这是开源库在低版本Android系统上的bug,会导致直接闪退。

10.

FATAL EXCEPTION: main
                                                   java.lang.RuntimeException: Unable to resume activity {com.sendbird.android.sample/com.sendbird.android.sample.groupchannel.GroupChannelActivity}: java.lang.RuntimeException: Failure delivering result 

解决:选择文件后返回原页面出现该问题,导致闪退,我这里原因为手机内存较小,原页面被回收。

11.

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of range value for column 'task_id' at row 1
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3971)

解决:我这里是task_id取了负值,显然有问题;被截断可能和整数补码有关。

结论:在MySQL和JDBC中,主键id取0代表可自动选择id,其它正数代表手动选择,为-1会出现错误。

12.

java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
    at org.apache.coyote.http11.InternalInputBuffer.parseRequestLine(InternalInputBuffer.java:189)

解决:URL路径上某些字符不支持,我这里是\,可以修改tomcat的conf目录下文件,具体参考其它文档和博客。

13.

onFailure(int, Header[], String, Throwable) was not overriden, but callback was received
                                                                                      org.json.JSONException: Response cannot be parsed as JSON data

解决:使用AsyncHttpClient回调出现这个问题,因为返回数据不是JSON。

14.

 

展开阅读全文

没有更多推荐了,返回首页