我偶然发现了一个非常有趣的依赖注入库,名为。使用很容易将视图注入到活动或片段中。Butterknife查看注射
class ExampleActivity extends Activity {
@InjectView(R.id.title) TextView title;
@InjectView(R.id.subtitle) TextView subtitle;
@InjectView(R.id.footer) TextView footer;
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.simple_activity);
ButterKnife.inject(this);
// TODO Use "injected" views...
}
}
但是,如果使用依赖注入这些观点必须public
使Butterknife
可以把它注射(使用private
领域导致异常fields must not be private or static
)。
在我过去的项目中,我总是把所有的成员字段(包括视图)private
作为我认为这是最佳实践(信息隐藏等)现在我想知道是否有一个原因,为什么不应该使所有views public
?在这种情况下,我不能使用,但我想使用它,因为它可以简化代码。
Guice几乎没有更好地做同样的事情,但没有搞砸你的代码? – 2014-12-02 08:24:31
你为什么认为它搞乱了代码? – Moonlit 2014-12-02 09:04:12
@G_V:也许,但谷歌说不要使用它。请参阅http://stackoverflow.com/questions/24194283/does-avoid-dependency-injection-frameworks-in-the-android-memory-guide-apply-t和http://stackoverflow.com/questions/5067681/guice - 性能上,机器人。 – 2015-07-30 11:25:53