自定义视图如何访问其活动?

tur*_*boy 31 android android-custom-view android-intent

我有一个自定义视图,并希望访问其活动中可用的字符串.我见过getContext()在视图类中使用的代码,但没有方法可以访问通过intent为其活动提供的String.如何使活动中的String可用于其自定义视图?

小智 38

View类中的getContext()方法返回在其构造函数上传递的上下文.通常,这是您想要的活动(活动扩展上下文).所以这可能适合你:

((Activity)getContext()).someMethod(...);
Run Code Online (Sandbox Code Playgroud)

  • 对于View直接由Activity创建的情况,这是一个很好的解决方案.这并非总是如此.如果视图是Dialog或PopupWindow的视图,则将上下文强制转换为Activity将导致错误 (12认同)
  • 正如@EyalBellisha指出的那样,这可能并不总是有效.在上下文包装的兼容性小部件的情况下,例如从`android.support.v*`扩展时的情况,`getContext()`将不是Activity类型.例如,对于AppCompatButton,它的类型为TintContextWrapper,不能转换为Activity. (2认同)