クライアント (アンドロイド)/サーバー (Java) アプリケーションを作成しています。サーバーは、クライアントからのリクエストごとに true または「false とエラー コード」を返します。クライアント側のstrings.xmlにすべてのエラーメッセージ(文字列)を追加しました。
これがエラーコードを保持する方法です。
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));
...
このプロセスを簡単にする方法は 2 つありますが、どちらもエレガントではありません。
アプローチ 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));
私が考えられないより良い方法があると思います。どちらの方法も痛々しく聞こえるからです。このような状況をどのように処理しますか?