我偶然發現了一個非常有趣的依賴注入庫,名爲。使用很容易將視圖注入到活動或片段中。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