-1
私は匿名の内部クラスを使用するメソッドを使用してWeb呼び出しをしようとしています。 Web呼び出しの結果を内部クラスの外で宣言された変数に代入することはできません。匿名の内部クラスの中で最終変数を設定
私はWeb呼び出しメソッドの呼び出しを破棄した場合、内部クラスはもはや存在しない変数への参照を持っているため、変数を最終的にする必要があることを理解しています。
コンパイラが明記されています
cannot assign value to final variable 'result'
を誰もが結果変数にwebcallの結果を割り当てることが私の回避策を教えてください。メソッドが戻った後
あなたはクラスのインスタンス変数(または方法の少なくとも外側のスコープとしてresult
を宣言する必要が
public String makeWebApiPost(AppObj appObj, String url, JSONObject jsonObject) {
Log.e(TAG, "inside makeWebApiPost. url = " + url + " JSONObject = " + jsonObject.toString());
final String result;
String accessToken = appObj.dbModel.getAccessTokenFromDB();
String refreshToken = appObj.dbModel.getRefreshTokenFromDB();
if (! accessToken.equalsIgnoreCase("NO_ACCESSTOKEN")) {
Log.e(TAG, "we have access tokens");
StringRequest request = new StringRequest(Request.Method.POST, url,
new Response.Listener<String>()
{
@Override
public void onResponse(String response) {
// response
Log.e("Response", response);
try {
JSONObject obj = new JSONObject(response);
Log.e(TAG, "JSON obj from get tokens = " + obj.toString());
result = obj.toString();
}catch (Exception e){}
}
},
new Response.ErrorListener()
{
@Override
public void onErrorResponse(VolleyError error) {
// error
Log.e("Error.Response", error.networkResponse.toString());
listener.getResult(null);
}
}
) {
/* @Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String,String> params = new HashMap<>();
params.put("Content-Type","application/x-www-form-urlencoded");
//..add other headers
return params;
}*/
@Override
public String getBodyContentType() {
return "application/x-www-form-urlencoded";
}
@Override
protected Map<String, String> getParams()
{
Map<String, String> params = new HashMap<String, String>();
params.put("scope", "openid email phone profile offline_access roles");
params.put("resource", "https://lw.xxx.co.uk");
params.put("grant_type", "password");
params.put("username", userName);
params.put("password", password);
return params;
}
@Override
protected VolleyError parseNetworkError(VolleyError response) {
try {
String json = new String(response.networkResponse.data, HttpHeaderParser.parseCharset(response.networkResponse.headers));
Log.e(TAG, "reponse error = " + json);
}catch (Exception e){}
return super.parseNetworkError(response);
}
};
requestQueue.add(request);
}
return null;
}//end of makeWebApiPost