Natknąłem się na bardzo interesującą bibliotekę Dependency Injection pod nazwą . Przy użyciu można łatwo wprowadzać Widoki do działań lub fragmentów.Widok z wtryskiem noża Buttermnife
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...
}
}
Jednak w przypadku korzystania z Dependency Injection opinie te muszą być public
tak, że można go wstrzyknąć Butterknife
(używając private
wyników pól w wyjątku fields must not be private or static
).
W moim poprzednim projekcie zawsze tworzyłem wszystkie pola członkowskie (łącznie z widokami) private
, ponieważ uważałem, że jest to najlepsza praktyka (ukrywanie informacji itp.) Teraz zastanawiam się, czy istnieje powód, dla którego nie należy robić wszystkich widoki public
? W tym przypadku nie mogę użyć , ale chcę go użyć, ponieważ znacznie upraszcza kod.
Czy Guice nie robi tak samo lepiej, ale bez zepsucia kodu? –
Dlaczego uważasz, że to psuje kod? – Moonlit
@G_V: Może, ale Google mówi, żeby go nie używać. Zobacz http://stackoverflow.com/questions/24194283/does-avoid-dependency-injection-frameworks-in-the-android-memory-guide-apply-t i http://stackoverflow.com/questions/5067681/guice - wydajność na Androida. –