今天开始把遇到的坑记录在博客中,以后开发遇到了也就easy啦 ……
as常用的快捷键
自动生成get,set,tostring: 通过快捷键Alt+Insert
ctrl+O 在本类中查找方法
ctrl+G 查看哪些类调用了本类或本类的方法
studio 设置ctrl+alt+down复制快捷键:
Alt+number 打开关闭底部面板
ctrl+1 变成成员变量
alt+shift+r 修改包名 类名
alt+shift+m 抽取代码为方法
Alt+enter 调出quick fixes availabe(类型转换等提示)。
.var生成对应的变量
fbc (findViewById)
1. 实体类使用Parcelable序列化可能遇到的问题 class not found when unmarshalling
实例化集合:
out.writeList(genre);
genre = new ArrayList<GoodsCountGenreBean>();
in.readList(genre, ClassLoader.getSystemClassLoader());
在进行传递的时候可能会遇到这个问题
看起来是类找不到,其实是传递数据的时候出错了,解决方法将对象中的集合取出来再传递:
Intent intent = new Intent(getActivity(), ContralActivity.class);
intent.putParcelableArrayListExtra("GoodsCountBean", mData.get(position - 1).getGoodsCountGenreBean());
intent.putExtra("CODE", 7);
startActivity(intent);
mData = getActivity().getIntent().getParcelableArrayListExtra("GoodsCountBean");
**2. Caused by: android.util.AndroidRuntimeException:
Calling startActivity() from outside of an Activity
context requires the FLAG_ACTIVITY_NEW_TASK flag.
Is this really what you want?**
错误原因:使用非activity类型的context启动activity没有设置标记位
解决方法:
Intent in = new Intent();
in.setClass(context, HomeActivity.class);
in.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//添加标记位
context.startActivity(in);
3.commit already called
错误原因:使用transaction管理fragment,进行多次提交的时候只实例化了一次transaction;
解决方法:每次提交之前都实例化transaction;
4.java.lang.IllegalArgumentException: parameter must be a descendant of this view
错误原因:发生这个错误主要是ListView或者其它ViewGroup等容器控件因为滑动而暂时移除子View,但却没有移除该子View上面的焦点Focus,所以在ListView滑动返回到原来的位置的时候没有恢复成原来的View,导致了该异常的产生;
解决方法:
protected class MyScrollListener implements OnScrollListener {
@Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount){
// do nothing
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (SCROLL_STATE_TOUCH_SCROLL == scrollState) {
View currentFocus = getCurrentFocus();
if (currentFocus != null) {
currentFocus.clearFocus();
}
}
}
}}}
5.at com.google.gson.internal.
Gson
Types.resolve(
Gson
Types.java:381)
错误原因:gson版本不对
解决方法:将gson版本改为1.7.1
5. Didn’t find class “com.eland.basepay.sample.test” on path: DexPathList[[zip file “/data/app/com.eland.basepay-1/base.apk”],nativeLibraryDirectories=[/vendor/lib, /sys
错误原因:应用jar包没有在Order and Export中勾上
解决方法:
6.the connection to the virtual device
这个是genymotion有时候启动不了的问题
解决方法:
网络–右键(属性)–更改适配器设置–VirtualBox Host-Only Network–属性–双击:Internet 协议版本4(TCP/IPv4)–修改为自动获取IP和DNS 即可解决这个问题。
7.Error:(1, 1) 错误: 非法字符: ‘\ufeff’ Error:(1, 10) 错误: 需要class, interface或enum
错误原因:Eclipse可以智能的把UTF-8+BOM文件转为普通的UTF-8文件,Android Studio还没有这个功能,所以使用Android Studio编译UTF-8+BOM编码的文件时会出现” 非法字符: ‘\ufeff’ “之类的错误
解决方法:
可以手动将UTF-8+BOM编码的文件转为普通的UTF-8文件。
用notePad++ 打开Java文件
点击格式,编码换成无bom格式编码
8. ViewStub must have a valid layoutResource
错误原因:添加layout的时候使用了标签的用法
解决方法:
* 9. ViewStub must have a non-null ViewGroup viewParent*
错误原因:ViewStub 只能被inflate一次,使用时要注意
* 10. ScrollView嵌套ScrollView*
在内部ScrollView处理OnTouch事件
innerSl.setOnTouchListener(new OnTouchListener() {
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP)
innerSl.requestDisallowInterceptTouchEvent(false);
else
innerSl.requestDisallowInterceptTouchEvent(true);
return false;
}
});
11、百度地图去掉定位蓝色圆点
注释方向的构造函数
// // 构造定位数据
// MyLocationData locData = new MyLocationData.Builder().accuracy(location.getRadius())
// // 此处设置开发者获取到的方向信息,顺时针0-360
// .latitude(location.getLatitude()).longitude(location.getLongitude()).build();
// mBaiduMap.setMyLocationData(locData);
12、Can’t create handler inside thread that has not called Looper.prepare()
错误原因:在子线程中更新ui
解决方法:加上轮询
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Loop.prepare();
//todo
Loop.loop();
}
13、提交json数据
JSONArray json = new JSONArray();
JSONObject jo = new JSONObject();
jo.put("user_id", cId);
jo.put("status", "0");
jo.put("time", tv_endDate.getText().toString());
json.put(jo);
提交:
parma.put("key",json);
14、通过fragment的setUserVisibleHint()弥补vieapager默认加载至少2页数据
package cn.irains.access_control_v2.common;
import android.support.v4.app.Fragment;
/**
* Author: msdx (645079761@qq.com)
* Time: 14-7-17 下午5:46
*/
public abstract class LazyFragment extends Fragment {
protected boolean isVisible;
/**
* 在这里实现Fragment数据的缓加载.
* @param isVisibleToUser
*/
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if(getUserVisibleHint()) {
isVisible = true;
onVisible();
} else {
isVisible = false;
onInvisible();
}
}
protected void onVisible(){
lazyLoad();
}
protected abstract void lazyLoad();
protected void onInvisible(){}
}
15、INSTALL_FAILED_NO_MATCHING_ABIS 解决办法
错误原因:是由于使用了native libraries 。该native libraries 不支持当前的cpu的体系结构。
解决办法:安装Genymotion-ARM-Translation_v1.1到模拟器中,并重启模拟器;下载地址:http://download.csdn.net/my