Android-改装不显示数据

时间:2018-08-04 12:25:19

标签: android retrofit retrofit2

我正在尝试学习制作简单天气应用程序的改装,但遇到了一些问题。我制作了两种方法来在Activity中显示数据,而方法在onCreate之外不起作用,但是第二种方法在工作中。在Android Profiler中,我可以看到JSON日志,但是在Activity中仍然看不到任何内容。有什么问题吗?

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ButterKnife.bind(this);

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(WeatherAPI_Interface.API_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build();

    WeatherAPI_Interface weatherAPIInterface = retrofit.create(WeatherAPI_Interface.class);

    latitude = 37.8267;
    longitude = -122.4233;
    Call<Currently> call = weatherAPIInterface.getWeather(latitude, longitude);

    call.enqueue(new Callback<Currently>() {
        @Override
        public void onResponse(@NonNull Call<Currently> call, @NonNull Response<Currently> response) {
            temp_textview.setText(String.valueOf(response.body().getCurrently().getTemperature()));
            city_textview.setText(response.body().getTimezone());
            image_View.setImageResource(Integer.parseInt(response.body().getCurrently().getIcon()));

        }

        @Override
        public void onFailure(@NonNull Call<Currently> call, @NonNull Throwable t) {

        }
    });

}


@Override
public  void getCurrentWeather(final Currently currently) {
    latitude = 37.8267;
    longitude = -122.4233;
    NetworkClient.getInstance().getWeather(latitude, longitude).enqueue(new Callback<Currently>() {

        @Override
        public void onResponse(@NonNull Call<Currently> call, @NonNull Response<Currently> response) {

            weather_textview.setText((CharSequence) response.body().getCurrently().getSummary());
            pressure_textview.setText((CharSequence) response.body().getDaily().getData());
            temp_textview.setText(String.valueOf(currently.getCurrently().getTemperature()));

            Log.d(TAG, "City" + currently.getLatitude());

        }

        @Override
        public void onFailure(Call<Currently> call, Throwable t) {
            Log.d(TAG, "Failed" + t.getMessage());
        }
    });



}



 public class NetworkClient {

private static WeatherAPI_Interface service;

public static WeatherAPI_Interface getInstance() {
    if (service == null) {
        Retrofit retrofit = new Retrofit.Builder()
                .addConverterFactory(GsonConverterFactory.create())
                .baseUrl(WeatherAPI_Interface.API_URL)
                .build();
        service = retrofit.create(WeatherAPI_Interface.class);
        return service;

    }
    else {
        return service;
    }
}

}

1 个答案:

答案 0 :(得分:0)

您没有调用该函数如何工作?

当活动开始时,它将仅在OnCreate中运行代码(以及其中的任何调用),因此要在其之外运行任何功能,您都需要对其进行调用。