java - 为什么java编译器不按顺序编译代码(从上到下)?
问题描述
String gst="123564";
int profile_status2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test2);
fn();
Toast.makeText(this, "Toast in onCreate method: "+profile_status2, Toast.LENGTH_LONG).show();
}
private void fn() {
setDataToDatabase tan = ServerConnection.doConnect();
tan.profile_status(gst, new Callback<ServerResponse>() {
@Override
public void success(ServerResponse response, Response response2) {
profile_status2 = Integer.parseInt(response.msg);
Toast.makeText(test2.this, "toast in method: " + profile_status2, Toast.LENGTH_LONG).show();
}
@Override
public void failure(RetrofitError error) {
}
});
}
构建应用程序后,我得到的结果是第一个 toast 来自 oncreate 方法,这意味着在 void 成功方法的 toast 之后可见。
解决方案
这是因为里面的代码Callback<ServerResponse>()
是异步运行的,Toast
被称为同步;您需要一个回调interface
,可以在请求完成时触发,以便显示Toast
.
推荐阅读
- html - 引导页脚调整大小导致页面内容被覆盖
- php - 实体不想刷新 - Symfony 3.4 / Mongodb / Php
- html - 如何在手风琴中锚定链接
- angular - Angular Material 粘性行不起作用
- python - Python 记录 YAML 格式与文字字符串连接的对齐方式
- node.js - 特定参与者的历史学家
- angular - 对于 Angular 5 通用应用程序,Google 网络缓存不可见
- azure - 创建 CSP AAD 并更改用户密码
- sql - TSQL - 语法大小写错误
- javascript - 一个接一个地以 HTML 格式打印 JSON 数据