项目BUG

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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值