今日计划:
1.完成记账本的剩余新功能:长按删除,点击编辑
2.搞懂问题6的原因,解决问题7
3.如果上述完成,就去学完网课的最后一部分,广播
遇到问题:Fragment的展示数据页面一直没有值
解决方法:找了很久没有发现bug,于是随手切换了几个月份,又回去,结果数据出现了。但是他为什么要切一会才出现,我打断点发现了FragmentPagerAdapter下getItem执行三次,也就是说当前ViewPager的PagerTabStrip显示8月份,它左边的7月份和右边的9月份也执行了查询语句,而且甚至是中序遍历,即8月7月9月。后来我试了试把BaseAdater匿名内部类给写为自定义类继承BaseAdapter并实现方法,然后就直接显示了,也不知道原因是什么
解决方法:
private static List<PocketBook> mlist = new ArrayList<>();
static说明每个对象复用,也就是说它的值一直被后续的值覆盖,和昨天的问题一样,解决方法就是,每次赋值新建一个对象即可
解决方法:
1.按昨天那种,一次传一个数据,在最后的页面初始化一个局部变量来存储
2.用bundle传递
bug:
切换年份之后,数据是切换之前的数据
尝试解决:
我在DatePickerDialog的监听事件结束时重新给适配器赋值并赋给ViewPager,结果没有解决
早上尝试了用变量赋给adapter,也就是年份会随日历改变
又尝试穿日历,还是不行
把静态全局的year和list数组改为局部变量,还是不行
师傅指导:把fragment作为参数,放到FragmentPagerAdapter中,然后在fragment中写刷新方法,最后调用fragment的刷新方法来进行数据刷新
尝试用viewPager的remove方法,remove会导致viewPager标题消失,内容还是不变
去尝试看作者源码,发现作者也没有解决
public void clear(){
list.clear();
for (int i = 0 ; i<getCount() ; i++){
getView(i,view,viewGroup);
}
notifyDataSetChanged();
Log.d(TAG, "clear: clear中的notify执行了");
}
搞一个空的list进去替换,也没有成功
使用constraintLayout时,layout文件报错:
Compilation errors
Caused by: java.lang.RuntimeException: Manifest merger failed with multiple errors, see logs
在这里您定义意图过滤器,但不定义任何操作,因此如果您不想指定任何操作,只需删除它或添加您想要监听的任何操作,
今日总结:
1.完善解决了记账本的bug,最终一个需求无法实现,但是最后看了作者的源码发现作者也没有实现这个功能
2.昨天余留bug:Fragment的展示数据页面一直没有值
解决方法:找了很久没有发现bug,于是随手切换了几个月份,又回去,结果数据出现了。但是他为什么要切一会才出现,我打断点发现了FragmentPagerAdapter下getItem执行三次,也就是说当前ViewPager的PagerTabStrip显示8月份,它左边的7月份和右边的9月份也执行了查询语句,而且甚至是中序遍历,即8月7月9月。后来我试了试把BaseAdater匿名内部类给写为自定义类继承BaseAdapter并实现方法,然后就直接显示了。
解决方法:
private static List<PocketBook> mlist = new ArrayList<>();
static说明每个对象复用,也就是说它的值一直被后续的值覆盖,和昨天的问题一样,解决方法就是,每次赋值新建一个对象即可
3.完成了网课最后的广播部分的学习
4.实现了静态注册广播,并调用手机震动
Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(VibrationEffect.createOneShot(500,255));
并用真机成功验证
5.学习完成了发送标准广播和有序广播,并能设置广播优先级(通过IntentFilter),通过abortBroadcast()中断广播
6.实现了分钟分钟到达广播和网络变更广播
7.实现了定时管理器AlarmManager
明日计划:
1.完成书上service部分的学习
2.学习自定义控件章节,完成对应demo