首先,先看界面需求
斜体样式
在进入该界面之前就应该获取到数据,所以需要使用okhttp框架的异步请求
直接上代码
OkHttpClient okHttpClient=new OkHttpClient();
// String json = bowlingJson("id", "2019");
RequestBody body=new FormBody.Builder().add("id","2019")
.build();
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
Call call=okHttpClient.newCall(request);
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.e("获得的身份", "失败");
}
@Override
public void onResponse(Call call, Response response) throws IOException {
try {
String data = response.body().string();//转化成string
Gson gson=new Gson();
UserBean a=new UserBean();
a = gson.fromJson(data,UserBean.class);
Log.e("获得", a.getId());
EventBusUtil.postSticky(new UserEvent(a,MyApplication.getContext()));
startActivity(new Intent(MyApplication.getContext(),ImformatiionActivity.class));
}
catch (Exception e){
e.printStackTrace();
}
}
});
上面代码是在点击事件中的。可以看出,前三步都是一样的,都是依次获得OKHttpClient,Requestbody还有Request。
接下来在于Call,不同于同步的excute()方法,这个时候调用的是enqueue()方法。
需要注意的是,最后onResponse()方法是发生在子线程当中,因此不可以进行UI的更新。
我获得数据过后是使用了EventBus来对事件进行处理。
接下来说一下将数据传输到下一个Activity,使用EventBUS
从上面的代码可以看出,新建了一个UserEvent这样的一个类
public class UserEvent extends Event {
public UserBean userBean;
public UserEvent(UserBean address1,Object source) {
super(source);
this.userBean=address1;
}
}
目的就是传输一个类的数据出去,最后如何取出来呢。接下来的两段代码都是在另一个Activity中添加的,
就是跳转到的界面
@Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
public void onEvent(UserEvent response) {
search_getaddress.setText(response.userBean.getUsername());
}
这里根据自己具体的类来提取数据。
最后别忘了注册与反注册。
@Override
protected void onStart() {
super.onStart();
EventBusUtil.register(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
EventBusUtil.unregister(this);
}