我很困惑你能帮助我吗?我读过类似的问题,但对我来说并不清楚,先谢谢你的耐心和关注。
我想返回使用Retrofit从API调用中检索到的onCreate数据。这是我的功能,我称之为Retrofit。
private void loadTimeZoneAPI(double latitude,double longitude,long timestamp,String apiKeyTz){
String lat = Double.toString(latitude);
String lon = Double.toString(longitude);
String time = Long.toString(timestamp);
serviceTZ.getDataTZ(lat+","+lon, time, apiKeyTz).enqueue(new Callback<TimeZoneGoogle>() {
@Override
public void onResponse(Call<TimeZoneGoogle> call, Response<TimeZoneGoogle> response) {
TimeZoneGoogle result = response.body();
timeZone = result.getTimeZoneId();
}
@Override
public void onFailure(Call<TimeZoneGoogle> call, Throwable t) {
}
});
}
我如何将timeZone值返回onCreate,我将用于计算。
答案 0 :(得分:0)
您需要为MainActivity中的数据或您用于查看的任何活动提供回调侦听器。 例如:make interface like this
interface RetrofitListener{
onDataLoad(TimeZoneGoogle timeZoneGoogle);
}
然后在Activity中提供一个引用,你可以从中调用Retrofit class
public class ActivityTest extends AppCompatActivity implements ActivityTest.RetrofitListener {
RetrofitCall retrofitListener;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
retrofitListener = new RetrofitCall(this);
}
}
和RetrofitCall类
private class RetrofitCall {
private RetrofitListener retrofitListener;
public RetrofitCall(RetrofitListener retrofitListener) {
this.retrofitListener = retrofitListener;
}
void getData(){
getDataTZ(lat+","+lon, time, apiKeyTz).enqueue(new Callback<TimeZoneGoogle>() {
@Override
public void onResponse(Call<TimeZoneGoogle> call, Response<TimeZoneGoogle> response) {
TimeZoneGoogle result = response.body();
timeZone = result.getTimeZoneId();
}
@Override
public void onFailure(Call<TimeZoneGoogle> call, Throwable t) {
}
});
}
}