Heim > Fragen und Antworten > Hauptteil
我在写App的时候好多Activity都在做同一个事情,就是操作各个Activity的界面的同一个部分。
所以我希望把这些做同一个事情的相同代码拿出来做一个类的静态方法,下次需要做这个事情就直接调用,不要重复写同样的代码。
于是我这样做的:
就这样把Context传递过去了,但是获取不到那个Context的变量和方法,这个应该怎么实现啊?
难道我必须要在几个Activity写出相同的代码?
阿神2017-04-17 17:46:33
if(c instanceof MainActivity){
((MainActivity) c).colorfulPanelTimerTask = new TimerTask(){
...
}
}
天蓬老师2017-04-17 17:46:33
如果你的相同部分的代码是界面和对应的逻辑用Fragment就好了,为什么要传递? 传递Context一般只为了使用Context的方法,而不是向下转成具体的Activity,这样反而过于耦合。 如果相同部分的代码是一小段代码,那把这些代码放到一个BaseActivity里面,然后让其他Activity继承它。
黄舟2017-04-17 17:46:33
1.如果是公用方法而且实现的功能是相同的:
写一个Activity的基类BaseActivity将公用方法写在基类中提供给子类调用
2.若公用方法实现的功能不同,方法名相同:
同样是创建基类BaseActivity并写一个抽象方法,具体实现在子类中完成
PS:传递context肯定是拿不到Activity里面的对象,至少要写((Activity)context)