您的位置:首页 > 其它

项目BUG

2015-06-11 18:06 197 查看
1.cdv.nanan.mobilestation.ui.fragment.AbsListFragment$ViewHolder cannot be cast to

cdv.nanan.mobilestation.ui.fragment.AbsListFragment$RecommondViewHolder

if(type.equals("list") && position==0){

recommondViewHolder = (RecommondViewHolder)convertView.getTag();

}else{

viewHolder = (ViewHolder) convertView.getTag();

}

2.java.lang.IndexOutOfBoundsException: Invalid index 15, size is 15

@Override

public int getCount() {

if(recommendList.size() <= 0){

return data == null?0:data.size();

}else{

return data == null?0:data.size()+1;

}

}

@Override

public Object getItem(int position) {

if(recommendList.size() <= 0 ){

return data.get(position);

}else if(recommendList.size()>0 && position == 0){

return recommendList.get(position);

}else{

return data.get(position -1);

}

}

3.逻辑判定类型 有问题!

4.java.lang.IndexOutOfBoundsException: Invalid index 15, size is 15

2中布局时 对应的position 问题

5.TabPageIndicator 动态刷新数据

6.建立表 要用空格!

public void onCreate(SQLiteDatabase db) {

// TODO 创建数据库后,对数据库的操作

String sql = "create table if not exists "+TABLE_CHANNEL +

"(_id INTEGER PRIMARY KEY AUTOINCREMENT, " +

ID + " INTEGER , " +

NAME + " TEXT , " +

TYPE + " TEXT ," +

ORDERID + " INTEGER , " +

SELECTED + " SELECTED)";

db.execSQL(sql);

}

7.圆点添加 动态布局

(1).xml 中 设置成match_parent

<RelativeLayout

android:id="@+id/relative_recommend_item"

android:layout_width="match_parent"

android:layout_height="160dp"

android:orientation="vertical" >

<cdv.nanan.mobilestation.view.UGallery

android:id="@+id/recomemd_gallery"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_centerInParent="true" />

<LinearLayout

android:id="@+id/change_layout"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_marginTop="5dp"

android:gravity="center_vertical" >

<LinearLayout

android:id="@+id/point_layout"

android:layout_width="match_parent"

android:layout_height="fill_parent"

android:gravity="center_vertical"

android:orientation="horizontal" >

</LinearLayout>

</LinearLayout>

</RelativeLayout>

(2) point_layout在java代码中动态设置重力位置Grivaty才会有效果

if(recommendList.size() > 0 && position == 0){

viewHolder.mRecommendItem.setVisibility(View.VISIBLE);

viewHolder.mNormalItem.setVisibility(View.GONE);

//圆点初始化 动态添加

viewHolder.imgs = new ImageView[recommendList.size()];

viewHolder.layout.setGravity(Gravity.CENTER_HORIZONTAL);

viewHolder.layout.removeAllViews(); // 刷新

for(int i = 0; i< recommendList.size();i++){

viewHolder.imgs[i] = new ImageView(mContext);

if(i == 0)

viewHolder.imgs[i].setBackgroundResource

(R.drawable.selectedflag);

else

viewHolder.imgs[i].setBackgroundResource

(R.drawable.unselectedflag);

viewHolder.layout.addView(viewHolder.imgs[i]);

}

/**初始化推荐栏目*/

adGallery_Adapt adapt = new adGallery_Adapt(mContext, recommendList);

viewHolder.mRecommendGallery.setAdapter(adapt);

}



8.activity 跳转闪屏问题

设置application 主题:

1.android:theme="@style/AppTheme">

2.<!-- Base application theme. -->

<style name="AppTheme" parent="android:Theme.Black.NoTitleBar">

<!-- Customize your theme here. -->

<item name="android:windowNoTitle">true</item>

<!--

解决黑色闪屏的情况。还有另外一种解决方式:配置

<item name="android:windowIsTranslucent">true</item>即可。

但是配置之后会发现activity的切换动画失效了。这时需要配置另外一个参数,

windowAnimationStyle属性。

-->

<item name="android:windowBackground">@drawable/transparent</item>

</style>

3.屏蔽带动画的跳转

ppressWarnings("deprecation")

// int version = Integer.valueOf(android.os.Build.VERSION.SDK);

// if (version >= 5) {

// ((Activity) mContext).overridePendingTransition(R.anim.room_in, 0); // 此为自定义的

动画效果,下面两个为系统的动画效果

// }

9.listView 搜索没有显示

ListView 的布局有问题,无法计算出高

//数据库操作

10.

@Override

public boolean addCache(ChannelItem item) {

// TODO Auto-generated method stub

boolean flag = false;

SQLiteDatabase database = null;

long id = -1;

try {

database = helper.getWritableDatabase();

ContentValues values = new ContentValues();

values.put("name", item.getName());

values.put("id", item.getId());

values.put("type", item.getType());

values.put("groups", item.getGroups());

values.put("orderId", item.getOrderId());

values.put("selected", item.getSelected());

id = database.insert(SQLHelper.TABLE_CHANNEL, null, values);

flag = (id != -1 ? true : false);

} catch (Exception e) {

// TODO: handle exception

} finally {

if (database != null) {

database.close();

}

}

return flag;

}

不写成

public static void createTable(){

if(!mdatabase.isOpen()){

open();

}

mdatabase.execSQL("CREATE TABLE IF NOT EXISTS priaseTable(id integer primary key

autoincrement,clickId varchar(100),"

+ "clickType varchar(100),clickCount INTEGER,nativeClick INTEGER)");

mdatabase.close();

}

:SQLiteDatabase 有2中类型, 不要写成静态变量

11.android sqliteDataBase 数据库操作,把SQLiteOpenHelper,PraiseManage,PraiseDao 都做成单例模式,

并且他们的关系是: PraiseManage 单例类的私有变量PraiseDao :用Dao来操作数据库中的表(增删改查);

PraiseDao 单例类的私有变量SQLiteOpenHelper: 用helper 来创建数据库,链接数据库;

12.判断ImageView图片是否存在,未加载成功,就显示默认图片。

if (mPhotoView.getDrawable() == null) {

// Toast.makeText(getActivity(), 图片加载失败, Toast.LENGTH_SHORT).show();

mPhotoView.setImageDrawable(getResources().getDrawable(R.drawable.icon_default_user_photo));

}

13. Xutil 视频下载不起

下载流 有问题!!!!!!!!

14.fragment 声明周期问题:

@Override

public void onCreate(Bundle savedInstanceState) {

Log.e("AbsListFragment","onCreate");

initData();

super.onCreate(savedInstanceState);

}

//返回界面会回调onCreateView

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) {

Log.e("AbsListFragment","onCreateView");

mContainer = inflater.inflate(R.layout.activity_list, container, false);

//initData();

//initBitMapUtil() ;

initView();

return mContainer;

}

15.ListView 点击变颜色

home_news_item.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@drawable/newsbg_listpage"

android:orientation="vertical" >

<!-- android:background="@color/white" -->

16.fragment 返回刷新问题

4.第一次打开APP,主页不能显示幻灯片,需要刷新下拉才能出现 OK

5.便民服务打开任意栏目后,返回,需要重新刷新才能显示栏目 OK

生命周期 !!!

17.webView 显示全网页,缩放不成功

刚亲测了一下,

webSettings.setUseWideViewPort(true);//關鍵點

webSettings.setLoadWithOverviewMode(true); webSettings.setLayoutAlgorithm

(LayoutAlgorithm.SINGLE_COLUMN);

使用这三行代码,屏幕密度是160 和屏幕密度是320 都能够适应的。至于你下面的根据屏幕密度进行判断然后在设置,添加

不添加都行。。

mWebView.getSettings().setUseWideViewPort(true);//关键点

// 设置出现缩放工具

mWebView.getSettings().setBuiltInZoomControls(true);

// 设置可以支持缩放

mWebView.getSettings().setSupportZoom(true);

18.java.lang.RuntimeException: Unable to start activity ComponentInfo

{cdv.nanan.mobilestation/cdv.nanan.mobilestation.ui.DownLoadActivity}: java.lang.SecurityException: Not

allowed to start service Intent { act=download.service.action } without permission not exported from uid

10157

修改service的action name ;

<!-- action name 不能更demo的一样,不然启动不起service -->

<service android:name=".down.DownloadService"

android:exported="false" >

<intent-filter>

<action android:name="xiazai.service.action" />

</intent-filter>

</service>

19.

android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database

public void clearFeedTable() {

String sql = "DELETE FROM " + SQLHelper.TABLE_CHANNEL + ";";

SQLiteDatabase db = helper.getWritableDatabase();

db.execSQL(sql);

revertSeq();

if (db != null) {

db.close();

}

}

private void revertSeq() {

String sql = "update sqlite_sequence set seq=0 where name='"

+ SQLHelper.TABLE_CHANNEL + "'";

SQLiteDatabase db = helper.getWritableDatabase();

db.execSQL(sql);

//用完 关闭数据库

if (db != null) {

db.close();

}

}

20.屏幕适配

21.数据源缓存

//***未用完之前,不能清空数据源

//recommendList.clear();

//newsList.clear();

// if(tmpRecommendList != null && tmpNewsList != null){

// //缓存操作

// recommendList = tmpRecommendList;

// newsList = tmpNewsList;

// }

不能清空,因为用了hashMap() 赋值 会让hashMap 引用被清空, 逻辑造成错误!

22.activity 通用统一的actionBar 标题栏

@Override

public void setContentView(int layoutResID) {

// TODO Auto-generated method stub

View root = getLayoutInflater().inflate(layoutResID, null);

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(

LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT);

/**添加内容*/

mContainer.addView(root,layoutParams);

mContainer.setBackgroundResource(R.drawable.background);

//!!

super.setContentView(mContainer);

}

重写setContentView() 并且 要返回你写的容器 container!

23重复弹框问题: 就是写一个全局的Toast类,当Toast不为空的时候,只改变msg,如果为空才new 一个出来显示!

private Toast mToast;

/**

* 弹出提示信息

*

* @param msg 信息

*/

public void makeToast(CharSequence msg) {

makeToast(msg, Toast.LENGTH_SHORT);

}

/**

* 弹出提示信息

*

* @param msg 信息

* @param duration 弹出时间长度

*/

public void makeToast(CharSequence msg, int duration) {

if (mToast == null) {

mToast = Toast.makeText(this, msg, duration);

} else {

mToast.setText(msg);

}

mToast.setGravity(Gravity.CENTER,0,0);

mToast.show();

}

24.返回键点击 回调用了OnDestroy() 方法,然后清空数据 导致数据没有了。但是在MyConfiguration里面的缓存数据并没

有清空。

@Override

public void onDestroy() {

Log.e("AbsListFragment", "onDestroy");

super.onDestroy();

// if(recommendList != null){

// recommendList.clear();

// }

// if(newsList != null){

// newsList.clear();

// }

}

25.在application 中写数据缓存

//缓存数据

ColumnListCache.getCacheData();

26.数据清空 不但要把数据库清空 还要把本地的数据源清空!

/**保存到本地*/

private void updateUserChanneList(List<NewsFirstCatalog> newsFirstCatalog){

//保存本前 请客空以前的userChannelList!!!

userChannelList.clear();

ChannelManage.getManage(MyApplication.getApp().getSQLHelper()).deleteAllChannel();

for(int i = 0;i<newsFirstCatalog.size();i++){

userChannelList.add(new ChannelItem(Integer.valueOf(newsFirstCatalog.get(i).id),

newsFirstCatalog.get(i).name,newsFirstCatalog.get(i).type

,newsFirstCatalog.get(i).groups, i, 1));

}

ChannelManage.getManage(MyApplication.getApp().getSQLHelper()).saveUserChannel

(userChannelList);

//ChannelManage.getManage(MyApplication.getApp().getSQLHelper()).saveOtherChannel

(otherAdapter.getChannnelLst());

userChannelList = ((ArrayList<ChannelItem>)ChannelManage.getManage(MyApplication.getApp

().getSQLHelper()).getUserChannel());

otherChannelList = ((ArrayList<ChannelItem>)ChannelManage.getManage(MyApplication.getApp

().getSQLHelper()).getOtherChannel());

}

27.数据缓存的时候 可能对象不为空, 但是里面没有数据!!! 所以 先加以size 判断 在赋值为null空,进行初始化

recommendList = ColumnListCache.recommendMap.get(String.valueOf(catid));

newsList = ColumnListCache.newsListMap.get(String.valueOf(catid));

Log.e("newsList.size()", ""+newsList.size());

if(newsList.size() <=0){

newsList = null;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: