如何在非Activity类中访问上下文(Context)

3

我正在编写我的第一个Android应用程序,但在处理上下文对象时遇到了一些问题。许多方法/构造函数似乎需要当前上下文(活动),这在我的操作监听器中引起了一些问题。为了避免在活动类中创建所有的监听器和处理程序作为匿名类,我为每个我想要处理的事件创建了一个类。例如,一个按钮buttonRegister将被初始化为:

buttonRegister.setOnClickListener(new RegisterButtonClickAction());

然而,当我这样做时,我的监听器内部没有访问当前上下文对象的权限。我可以将当前上下文作为构造函数参数传递,但我不确定这是否是最佳选择。在Android中创建处理程序/监听器或者一般工作时,如何处理上下文对象最佳实践?

谢谢,
b3n


我一直在使用构造函数参数或匿名内部类,没有出现问题。 - Martín Schonaker
1个回答

1

只需在处理程序的构造函数中传递当前上下文即可。

虽然使用这样的事件处理程序可能会变得混乱。大多数情况下,当您处理某个事件 - 比如按下按钮 - 然后您想要更改活动中的其他变量的状态(更改一些数据结构、UI元素如TextView等)。如果事件处理程序类在外部,则还必须为其可以修改的对象提供引用,可能在其构造函数中。

我通常只使用匿名或至少内部类,我认为这更加清洁和简单。


谢谢,虽然我想避免使用包含各种事件处理逻辑的大类并将其拆分一下,但这很有道理。 - b3n

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接