首页 > 解决方案 > 为什么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 之后可见。

标签: javaandroid

解决方案


这是因为里面的代码Callback<ServerResponse>()是异步运行的,Toast被称为同步;您需要一个回调interface,可以在请求完成时触发,以便显示Toast.


推荐阅读