В попытке полностью отделить Android SDK от моих классов презентаторов, я пытаюсь найти лучший способ избежать доступа к идентификаторам ресурсов, которые мы обычно используем для R. Я думал, что могу просто создать интерфейс для доступа к таким вещам, как строковые ресурсы, но мне все еще нужны идентификаторы для ссылки на строки. Если бы я сделал что-то вроде...
public class Presenter {
private MyView view = ...;
private MyResources resources = ...;
public void initializeView() {
view.setLabel(resources.getString(LABEL_RES_ID);
}
}
Мне еще нужно иметь LABEL_RES_ID
, а затем сопоставить его с R.string.label
в моем мосте ресурсов. Это круто, потому что я могу поменять его при тестировании единиц с чем-то другим, но я не хочу управлять другим сопоставлением со строковым значением.
Если я сдаюсь и просто использую значения R.string, мой ведущий снова привязан к моему представлению. Что не идеально? Есть ли более простое решение, которое люди используют, чтобы обойти это, чтобы не допустить их из ведущего. Я не хочу управлять строками в некотором роде вне того, что предлагает Android, потому что я все еще хочу бросить их в файлы макета и получить выгоду от интернационализации и т.д. Я хочу сделать немой unit test, который может работать с этим презентатор, не требуя, чтобы Android SDK генерировал файлы R.java. Это слишком много, чтобы спросить?