您的位置:首页 > 其它

自己做项目中遇到的一些常见问题及解决方法

2014-05-10 19:38 267 查看
1) 数据来自于服务器和数据库, 可能出现FC问题
日志: java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread.

原因: adapter中的数据(List)被改变,如果较长时间(几十毫秒)没有通知ListView
解决思路: list一旦改变,立即通知ListView

2) Unable to resolve target 'android-14'
原因: 开发者开发项目的环境(Android版本)不同,
解决: 修改Android编译版本

3) Found 2 versions of android-support-v4.jar in the dependency list
原因: 项目和库的supportv4.jar冲突
解决: 删除项目中的jar包,保留库中的jar(最新)

4)在Activity的类中声明成员变量, String[] menuStr = getResources().getStringArray(R.array.menu_str);
运行时抛出空指针异常
背景知识: 类的初始化顺序,先成员再构造.
原因: <init> 在初始化类的成员变量时出错

解决: 所有的资源, getResource()方法必须在onCreate中调用

5) 切换滑动菜单, 滑动Tab中的片段无法显示
原因: // 注意: 在Fragment中必须使用childFragmentManger
FragmentManager fm = getChildFragmentManager();

6) 无法联想到getChildFragmentManager()
原因: supportV4包版本较旧
从目录中拷贝: \adt-bundle-windows-x86-20131030\sdk\extras\android\support\v4\android-support-v4.jar

7) 解决滑动菜单和ViewPager水平滑动事件冲突问题
public void setMenuDrawerEnable(boolean enable) {
if (enable) {
mDrawer.setTouchMode(MenuDrawer.TOUCH_MODE_FULLSCREEN);
} else {
mDrawer.setTouchMode(MenuDrawer.TOUCH_MODE_BEZEL);
}
}

8)menudrawer与ViewPager和banner之间的嵌套冲突问题(2.3/和滑动菜单冲突)
原因: 内层控件得到事件, 然后事件会传递到外层控件和布局
思路:
a) 直接将ChildViewPager.java文件导入到应用中
b) 将<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="140dp"
android:background="#C0C0C0" >
</android.support.v4.view.ViewPager>
修改成
<com.duobei.widget.ChildViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="140dp"
android:background="#C0C0C0" >
</com.duobei.widget.ChildViewPager>
c) 在成员变量中将private ViewPager mPager改为private ChildViewPager mPager;
d)在initViewPager(layout)实现mpager的监听事件implements OnSingleTouchListener
mPager.setOnSingleTouchListener(this)
e)重写onsingletouch就可以实现判断是哪张图片的监听事件了
@Override
public void onSingleTouch() {
int currentItem = mPager.getCurrentItem();
Toast.makeText(getActivity(), "touchtouch"+currentItem%5, Toast.LENGTH_SHORT).show;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息