2017-11-15 9 views
0

私はAndroidアプリケーションを使用していますが、現在はstrings.xmlリソースファイルでエラーメッセージと成功メッセージを管理しています。今私がこれらのメッセージを変更したいのであれば、私はstrings.xmlファイルを変更し、play-storeでアプリのアップデートを行う必要があります。これは少しオーバーヘッドです。代わりに、これらのメッセージをサーバー側(バックエンド)から管理して、更新なしで変更できるようにします。誰でも私にこれを達成するための最良の方法を提案してもらえますか?エラーと成功のメッセージを処理する最良の方法は、バックエンドからテキストをコピーすることですか?

+0

https://cloud.google.com/appengine/docs/standard/java/gettingstarted/creating-guestbook –

+0

ねえ、あなたがサーバーから管理することができます。ここでは

はあなたが始めるためにいくつかのサンプルコードですあなたがAPIにヒットしたときに、このAPIの成功が成功すれば、成功したコードとメッセージと応答データを返します。失敗すると、サーバーからエラーコードとエラーメッセージが取得され、トースト、またはあなたの都合に合わせて。あなたが使用するAPIを打つための – Dilip

+0

Volley or Retrofit ??? – Dilip

答えて

0

あなたが使用飛来している場合、以下の構文解析メソッドをオーバーライドしない限り、Exception.getMessageは()おそらくあなたが探しているものを返さないようにし、このあなたのためhelpfilある

VolleyErrorは、本当にただの拡張例外です拡張されたRequestクラスでVolleyErrorを解析します。これを処理するための本当に基本的な方法のようなものを行うに次のようになります。あなたはあなたの拡張要求クラスにこれを追加した場合

//In your extended request class 
@Override 
protected VolleyError parseNetworkError(VolleyError volleyError){ 
     if(volleyError.networkResponse != null && volleyError.networkResponse.data != null){ 
       VolleyError error = new VolleyError(new String(volleyError.networkResponse.data)); 
       volleyError = error; 
      } 

     return volleyError; 
    } 
} 

を、あなたのgetMessage()は少なくともnullを返すべきではありません。私は通常、これを気にする必要はありません。なぜなら、あなたのonErrorResponse(VolleyError e)メソッドの中からすべてを行うのは簡単だからです。

単純化するためにJSONライブラリを使用する必要があります。たとえばGsonを使用するか、追加の外部ライブラリを必要としないApacheのJSONObjectを使用できます。最初のステップは、あなたのサーバーからJSONがJSONObject(JSONObjectsとJsonArraysのどちらかを使用するか、または別のライブラリを使用してJSONObjectに変換することができます)選択肢)、または文字列をパースするだけです。その後、トーストを表示するだけです。

public void onErrorResponse(VolleyError error) { 
    String json = null; 

    NetworkResponse response = error.networkResponse; 
    if(response != null && response.data != null){ 
     switch(response.statusCode){ 
      case 400: 
        json = new String(response.data); 
        json = trimMessage(json, "message"); 
        if(json != null) displayMessage(json); 
        break; 
      } 
      //Additional cases 
    } 
} 

public String trimMessage(String json, String key){ 
    String trimmedString = null; 

    try{ 
     JSONObject obj = new JSONObject(json); 
     trimmedString = obj.getString(key); 
    } catch(JSONException e){ 
     e.printStackTrace(); 
     return null; 
    } 

    return trimmedString; 
} 

//Somewhere that has access to a context 
public void displayMessage(String toastString){ 
    Toast.makeText(context, toastString, Toast.LENGTH_LONG).show(); 
} 
+0

私はこの方法を知っていますが、私は異なるエラーと成功の応答のためのカスタムメッセージを持っているので、私の場合は動作しません。パスワードの変更が成功しました。「あなたのパスワードが変更されました。」と表示されます。次に、「パスワードが更新されました」と変更する場合はどうすればよいですか? –

+0

変更要求はビジネスから来て、サーバー側でのみ変更はアンドロイド側で何もする必要はありません。 – Dilip

+0

これは私がこれ以上の理想的な方法ではないと思うすべてのAPI契約(応答json)の変更を必要とします巨大なアプリケーション。 –

関連する問題