android-studio - Android 作用域传递问题?
问题描述
我在写App的时候好多Activity都在做同一个事情,就是操作各个Activity的界面的同一个部分。所以我希望把这些做同一个事情的相同代码拿出来做一个类的静态方法,下次需要做这个事情就直接调用,不要重复写同样的代码。于是我这样做的:
就这样把Context传递过去了,但是获取不到那个Context的变量和方法,这个应该怎么实现啊?难道我必须要在几个Activity写出相同的代码?
问题解答
回答1:1.把相同的方法抽象到BaseActivity中。
回答2:你可以在Activity A中写共用代码,然后需要用到共同代码的Activity继承Activity A
回答3:可以采用Mvp模式,将逻辑控制层相同的一部分放到Preserent层来管理。
回答4:if(c instanceof MainActivity){ ((MainActivity) c).colorfulPanelTimerTask = new TimerTask(){... }}回答5:
能告诉我这个方法是做什么用的吗? 因为你的返回类似是void,所以肯定是要通过contxt做些什么事情
回答6:如果你的相同部分的代码是界面和对应的逻辑用Fragment就好了,为什么要传递? 传递Context一般只为了使用Context的方法,而不是向下转成具体的Activity,这样反而过于耦合。 如果相同部分的代码是一小段代码,那把这些代码放到一个BaseActivity里面,然后让其他Activity继承它。
回答7:你的java还未入门,先打好基础
回答8:1.如果是公用方法而且实现的功能是相同的:写一个Activity的基类BaseActivity将公用方法写在基类中提供给子类调用2.若公用方法实现的功能不同,方法名相同:同样是创建基类BaseActivity并写一个抽象方法,具体实现在子类中完成PS:传递context肯定是拿不到Activity里面的对象,至少要写((Activity)context)
回答9:写一个抽象父类。将共用方法放进去。
相关文章:
1. python - 求一个在def中可以实现调用本def满足特定条件continue效果的方法(标题说不太清楚,请见题内描述)2. $fields = $values = [];这条代码一直定义不了,一直报错,老师的源码也是被报错的,执行不了,请问该怎么解决这个问题3. mysql 5.7单表300万数据,性能严重下降,如何破?4. MYSQL新建用户设置可以远程访问的问题5. node.js - 我想让最后进入数据库的数据,在前台最先展示,如何做到?6. mysql - 我的myeclipse一直连显示数据库连接失败,不知道为什么7. mysql数据库做关联一般用id还是用户名8. MySQL能否给某个字段的值设置有效期?9. mysql多表联合查询优化的问题10. MySQL中的enum类型有什么优点?
![$fields = $values = [];这条代码一直定义不了,一直报错,老师的源码也是被报错的,执行不了,请问该怎么解决这个问题](http://www.haobala.com/attached/image/news/202205/093622cb60.png)