繁体   English   中英

回调完成时 Android 在 TextView 上设置文本

[英]Android setText on TextView when Callback is finished

你好我有这样一个代码: pointsToAssignTv.setText(String.valueOf(restData.getPointsUnass(login))); 其中restData.getPointsUnass(login)就是这样一个Retrofit代码:

    public int getPointsUnass(String name) {
    Call<String> result = Api.getClient().getPointsUnass(name);
    result.enqueue(new Callback<String>() {
        @Override
        public void onResponse(Call<String> call, Response<String> response) {
            pointsUnass = Integer.parseInt(response.body());
        }
        @Override
        public void onFailure(Call<String> call, Throwable t) {
            Log.e("tag",t.toString());
        }
    });
    return pointsUnass;
}

我想将此值分配给此 TextView 但它返回 null,我想这就是它需要通过互联网处理然后返回的时间。 您会建议改写哪段代码?

您需要将 setText() 语句移动到 onResponse() 回调方法。 只需添加此语句 - pointsToAssignTv.setText(String.valueOf(pointUnass)); 到 onResponse() 方法。

从 API 获得响应后,在onResponse中应添加someText.setText(yourResponse)注意:注意线程,在 android 中您只允许在主线程中更改 UI 元素,如果您想更改响应中的文本,您必须使用处理程序

new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
    Log.d("UI thread", "I am the UI thread");
}
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM