Я пишу приложение клиента (android)/server (java). Сервер возвращает true или «false и код ошибки» для каждого запроса, сделанного клиентом. Я добавил каждое сообщение об ошибке (string) в strings.xml на стороне клиента.Как делиться идентификаторами ресурсов между клиентом и сервером в Android?
Вот как я держу коды ошибок;
public class ErrorCodes {
public static final int WRONG_USERNAME = 1;
public static final int WRONG_PASSWORD = 2;
public static final int WRONG_EMAIL= 3;
...
}
Проблема в том, что каждый раз сервер отправляет код ошибки, я должен обрабатывать его примерно так (примерно);
int code = conn.receive();
if(code == ErrorCodes.WRONG_USERNAME)
print(getResources().getString(R.string.WRONG_USERNAME_ERROR));
else if(code == ErrorCodes.WRONG_PASSWORD)
print(getResources().getString(R.string.WRONG_PASSWORD_ERROR));
...
Есть два подхода в моем сознании, чтобы облегчить этот процесс, но оба они не изящны.
Подход 1: Выполнение значений ErrorCodes, равное значениям R.string вручную. Также с этим подходом мне не нужно сохранять класс ErrorCodes на стороне клиента.
Проблема: Мне нужно обновлять оба ErrorCodes и strings.xml каждый раз, когда добавляю новое сообщение об ошибке.
Подход 2: Использовать сгенерированный файл R.java на сервере, не нужно ничего обновлять. Это лучшее, что я могу придумать.
Задача (и): Будет много ненужного материала с R.java. Я должен использовать его так, как на стороне сервера: R.string.xyz
. И если сервер не закодирован с помощью java, весь подход бесполезен.
Если я использую один из них, я могу сделать это на стороне клиента;
int code = conn.receive();
print(getResources().getString(code));
Я думаю, что есть лучший способ, о котором я не могу думать. Потому что оба пути звучат больно. Как справиться с такой ситуацией?
Вы правы в отношении зависимости от сервера, это была моя ошибка, чтобы даже подумать об этом. Я решил использовать подобный метод для того, что вы предложили. Я использовал объект Hashtable; 'errors.put (ErrorCode, R.string.ERROR_WRONG_USERNAME)'. Спасибо. –