getResources()は困る
contextを渡さずにこんなことをやると、android.content.res.Resources$NotFoundException
でクラッシュします。
Hoge.java
public String getHoge() {
Resources resources = Resources.getSystem();
String str = resources.getString(R.string.hoge);
・・・
}
クラッシュする理由
Resources.getSystem()はWhy can't I use Resources.getSystem() without a Runtime error?にも記載がある通り、利用できる場所が限られています。
DataBindingでContextを引数として渡す方法
じゃぁContextを引数として渡してあげればいいんです。
layou.xml
<TextView
・・・
android:text="@{hoge.getHoge(context)}"
/>
Hoge.java
public String getHoge(Context context) {
// これは間違い
//Resources resources = Resources.getSystem();
// こうすればOK
Resources resources = context.getResources();
String str = resources.getString(R.string.hoge);
・・・
}