在我的电脑重装后,android开发软件也是重新安装,许多之前编写的项目都会出现Caused by: java.lang.ClassNotFoundException异常,都是找不到这个包。
解决方案:
错误1:
Caused by: java.lang.ClassNotFoundException: android.support.v4.view.ViewPager in loader dalvik.system.PathClassLoader
1.将项目中libs下的android.support.v4获取其他的包先复制到另一个地方然后删掉
2.并重新复制该包粘贴到libs下重新加载
3.然后右击项目build path->configur build path ->orderand export 勾选android private libraries 、android dependencies这两个选项,重新运行就可以,我的项目就是这样修改的能够正常运行。
截图:
错误2:
R文件不能自动编译xml文件的id属性等
解决:
选择eclipse上部一行菜单栏project,勾选build automaticlly
错误3:
SQLServer2005_SSMSEE_x64是无法安装上,出现一个错误框“安装程序在安装此软件包时遇到一个错误,这可能是此软件包有错,错误码是29506“然后进行回滚操作,安装失败
解决方案:
在电脑任意位置新建 *.cmd命令文件,编辑内容为:
msiexec /i F:\Soft\SQLServer2005_SSMSEE_x64.msi;此处F:\*\*是自己数据库安装文件位置,改一下然后右击文件以管理员身份运行就可成功安装。
错误4:
java.net.SocketTimeoutException: Connection timed out :socket连接超时
解决:
从字面看是超时原因,然后搜索网上对超时异常的处理,之后测试多次还是不行,后来看到网友说socket连接错误,开启服务然后确认ip是否正确,是不是端口占用,主要问题存在于socket连接上,后来一一排错,原来我的服务器没开,因为写在一个项目,运行时老提示错误,不行运行,没想到是这个原因,后来添加了java应用程序,将服务端代码写在main方法里,开启服务,运行客户端,一下就能连接接收客户端请求。总结:在确认自己代码无误的时候,一定要转变思想从其他地方入手,我光纠结自己代码是不是哪里写错了,因为刚开始接触就只能想到代码哪里不对,要不是别人提醒还在找着呢,最终原来只是服务器没开,真是超级无语,真想一头撞墙上,呵呵,大家也要多从各个相关方面找答案。
错误截屏:
错误五:The connection to adb is down, and a severe error has occured.
You must restart adb and Eclipse.
Please ensure that adb is correctly located at 'D:\android-sdk-windows\platform-tools\adb.exe' and can be executed.
android模拟器一直工作的好好的,却突然提示上面的信息;
解决:
重新启动eclipse及adb,也没有效果。可能是Android模拟器端口被占用了,然后重新启动eclipse,第一个把android模拟器启动起来,运行项目就可以了,对自己挺适用的,呵呵,遇到问题越多解决问题能力也在慢慢提高,不要灰心。
错误六:java.lang.ArrayIndexOutOfBoundsException
用非法索引访问数组时抛出的异常。如果索引为负或大于等于数组大小,则该索引为非法索引。private boolean[] state=new boolean[]{}报错。
解决:
呵呵原来自己忘了初始化,在{ }里面,private boolean[] state=new boolean[]{false,false,false,。。。}或者可以只声明数组长度private boolean[] state=new boolean[8];在下面的程序中就可以使用索引范围内的索引,state[5]=true;
错误七:ListView中含有button、checkbox等组件listview.setOnItemClickListener没反应问题。
listView控件中自定义了item项控件,里面添加了Textview,Button,CheckBox等组件,问题出现了,ListView控件中的onItemClickListener事件监听不到,经过多次测试之后,发现是由于添加CheckBox的原因,把它改为TextView之后便没问题,具体原因应该是checkbox.click监听方法和listview的itemclick方法冲突,从网上找到了解决办法, 当我们使用listView嵌套button或者其它clickable控件时会出现listView的onitemClick事件不响应的问题。我们需要在item的xml文件中的根布局中加上一句android:descendantFocusability="blocksDescendants" 很多时候我们需要复杂结构的ListView,因此我们需要监听其中的不同控件的响应,这个可以通过自定义适配器来完成。在ListView三种适配器当中,最受青睐的就是SimpleAdapter适配器,它的扩展性很强,可以将ListView中每一项都使用自定义布局,插入N多组件;但是SimpleAdapter也有弱点,那就是当ListView中每一项有Button、CheckBox等这些有事件的组件,我们想监听它们就必须自定义适配器!
如何写一个自定义通用适配器类!SimpleAdapter 构造的时候,需要五个参数来进行映射数据到ListView中,自定义通用适配器其实也就是实现系统SimpleAdapter的一个自定义版借鉴学习网址:http://flyingandroid.diandian.com/post/2012-03-23/18788455
解决:
对于我的项目只需要这样改就可以触发itemclick事件监听,
<CheckBox
android:id="@+id/check"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"//取消焦点,listview就可以监听itemclick事件
android:checked="false" >//默认为未选中状态
</CheckBox>
android:focusable="false" 解决listview的itemclick不能点击问题,因为焦点被复选框所占,它的优先度比listview高
错误八:listview中项带有checkbox,但是checkbox 选中之后滑动listview滚动条再回到之前的视图,之前选中的复选框状态改变为没有选中。
解决:
在获取listview的数据列表定义数组Map<Integer, Boolean> state;来记录checkbox的状态,在自定义的适配器的getView()方法里的checkbox的setOnCheckedChangeListener复选框状态变化监听事件中添加
.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
state.put(position, isChecked);//记录变化的checkbox状态***************************处理
}
}
监听事件后在最后加上重新设置复选框的状态。
public View getView(final int position, View convertView,
ViewGroup parent) {
convertView = mInflater.inflate(layoutID, null);
// 查找listview中checkbox控件
CheckBox checkBox = (CheckBox) convertView .findViewById(***);
checkBox .setOnCheckedChangeListener(******);
checkBox.setChecked(state.get(position));//加上这句,使checkbox状态不随滚动而改变,保存用户最终选择状态,否则列表滚动条滚动时,之前选中的复选框都改为默认状态
return convertView;
}
先写这,其他错误发现再添加。