I stumbled across a very interesting Dependency Injection library called ButterKnife
. Using ButterKnife
it's easily possible to inject Views into activities or fragments.
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...
}
}
However if using Dependency Injection those Views must be public
so that Butterknife
can inject it (using private
fields results in an exception fields must not be private or static
).
In my past project I always made all the member fields (including the views) private
as I thought this is best practice (information hiding etc.) Now I am wondering if there is a reason why one should not make all the views public
? In this case I cannot use ButterKnife
but I want to use it because it simplifies the code a lot.