微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – Android – 如何避免活动之间重复的代码

这是一个普遍的问题,但我会给你一个具体的例子.

我在应用程序中有很多活动.在所有活动中,都有一个Facebook按钮.当您单击该按钮时,它会将您带到特定的Facebook页面.我希望按钮在每个页面上的行为方式完全相同.

现在,在每个Activity中,我为Facebook按钮创建一个onClickListener()并制作意图并启动活动.每个Activity都有相同的代码.

编写此代码一次并将其包含在多个活动中的最佳方法是什么?反正有没有包含其他.java文件

我知道可以使用的一个解决方案是创建一个扩展Activity的基本CustomActivity类,然后让所有活动扩展CustomActivity.然后将我的onClickListener()代码放在CustomActivity中.我是Java的新手,但我不确定这是不是最好的方法.我的一些活动已经按原样扩展了其他自定义活动类,所以扩展更多东西的东西可能会变得有点混乱,我不知道.

UPDATE

扮演魔鬼的拥护者:让我说我选择了继承路线,并创建了一些我希望我的活动扩展的CustomActivity. CustomActivity将包含我需要用于所有活动的一堆通用代码,包括但不限于Facebook按钮功能.当有一个Activity我需要使用CustomActivity中的通用代码但该特定Activity中没有Facebook按钮时会发生什么?

解决方法

共同的基类可能是最好的方法. (如果您的某些活动扩展了Activity并且某些扩展了Activity子类(例如ListActivity),那么它的效果不是很好.

另一种方法是创建一个单独的类来实现单击侦听器的逻辑.这并没有消除所有重复的代码 – 每个活动仍然需要实例化和注册一个监听器 – 但是只需要在监听器类中写入一次该逻辑.

在任一替代方案中,您可以考虑将android:onClick属性分配给按钮.这样你就不需要注册点击监听器了;你只需要在每个活动中实现目标方法.这对于基类方法特别有用.

UPDATE

假设你去了继承路线,你想要一个没有Facebook按钮的活动.如果您使用的是android:onClick技术,那么您不必在代码中执行任何不同的操作 – 因为没有按钮会调用您的onClick方法,该方法只会坐在那里无所事事.如果要在代码中安装OnClickListener,则只需在注册侦听器之前测试该按钮是否存在(即,findViewById()没有返回null).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐