我在谷歌搜索了过去3个小时无济于事,我不确定这是否可行。
我在10-12个不同的活动中使用AsyncHttpResponseHandler,并且我在所有这些活动中对初始代码中的“byte [] bytes”执行相同的初始转换,即每个活动的代码大约50行。
如何对字节进行转换,然后返回调用自定义类的活动的最终值?
我如何引用消息变量?
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AsyncHttpClient client = new AsyncHttpClient();
client.post(URL, params, new VenueAsyncHttpResponseHandler() {
@Override
public void onSuccess(int i, Header[] headers, byte[] bytes) {
//How do I reference the transformed message here?
switch (message) {
case "success":
//Do something
break;
}
}
});
}
}
使用自定义类
时public class VenueAsyncHttpResponseHandler extends AsyncHttpResponseHandler {
@Override
public void onSuccess(int i, Header[] headers, byte[] bytes) {
String byteToString = null;
JSONObject response = null;
String message = "";
try {
byteToString = new String(bytes, "UTF-8");
response = new JSONObject(byteToString);
message = response.getString("response"); //return this to the activity
} catch (UnsupportedEncodingException | JSONException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(int i, Header[] headers, byte[] bytes, Throwable throwable) {
}
}
答案 0 :(得分:0)
向您的活动类添加一个方法,该方法可以根据消息执行您想要的操作。然后从onSuccess()调用此方法。
另外,不要创建匿名内部类。而是直接实例化您的自定义类:
VenueAsyncHttpResponseHandler handler = new VenueAsyncHttpResponseHandler();
client.post(URL, params, handler);