有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓如何修复java。lang.ClassCastException。。。无法转换接口

在我的主要活动中,我有一个显示天气信息的片段。我在片段和主活动之间有一个接口,它将数据从片段发送到活动。问题是,当尝试专门输入片段活动时,应用程序崩溃,并显示此错误

任何帮助或任何其他方式都将不胜感激

    private void loadData() {
        final List<WeatherForeCast> listWeatherForeCasts = new ArrayList<>();
        StringRequest stringRequest = new StringRequest(Request.Method.GET,
                "https://www.metaweather.com/api/location/3534/",
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        try {
                            JSONObject jsonObject = new JSONObject(response);
                            JSONArray array = jsonObject.getJSONArray("consolidated_weather");
                            JSONObject jsonObject1 = jsonObject.getJSONObject("parent");
                            String cityCountry = jsonObject1.getString("title");
                            cityCountry = cityCountry + " ," + jsonObject.getString("title");
                            textViewCity.setText(Html.fromHtml(cityCountry ));

                            for (int x = 0; x < 6; x++) {
                                JSONObject weatherObject = array.getJSONObject(x);
                                WeatherForeCast weatherForeCast = new WeatherForeCast(
                                        weatherObject.getInt("air_pressure"),
                                        weatherObject.getInt("wind_speed"),
                                        weatherObject.getInt("the_temp"),
                                        weatherObject.getInt("humidity"),
                                        weatherObject.getString("weather_state_name"),
                                        weatherObject.getString("applicable_date"));
                                listWeatherForeCasts.add(weatherForeCast);
                                weatherState = listWeatherForeCasts.get(0).getWeatherState();
                                if(x == 0) {
                                    sendData();
                                }
                            }
                            ;
                            adapter = new Adapter(listWeatherForeCasts, getActivity());
                            recyclerView.setAdapter(adapter);

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(getActivity(), error.getMessage(), Toast.LENGTH_SHORT).show();
                    }
                });
        RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
        requestQueue.add(stringRequest);

    }




    public void sendData()
    {
        Log.i("fault", weatherState);
        getFirstWeatherInterface getFirstWeather = (getFirstWeatherInterface) getActivity();
        getFirstWeather.getFirst(weatherState);

    }



//Interface is implemented in the Activity
    @Override
    public WeatherForeCast getFirst(String string) {

        Log.i("fault2", string);
        return null
}

java.lang.ClassCastException: com.fan4.outdoorplus.WeatherFragments.WeatherActivity cannot be cast to com.fan4.outdoorplus.getFirstWeatherInterface
        at com.fan4.outdoorplus.WeatherFragments.WeatherFragment.sendData(WeatherFragment.java:143)
        at com.fan4.outdoorplus.WeatherFragments.WeatherFragment$1.onResponse(WeatherFragment.java:117)
        at com.fan4.outdoorplus.WeatherFragments.WeatherFragment$1.onResponse(WeatherFragment.java:92)
        at com.安卓.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:82)
        at com.安卓.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:29)
        at com.安卓.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:102)
        at 安卓.os.Handler.handleCallback(Handler.java:873)
        at 安卓.os.Handler.dispatchMessage(Handler.java:99)
        at 安卓.os.Looper.loop(Looper.java:193)
        at 安卓.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.安卓.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:858)

共 (1) 个答案

  1. # 1 楼答案

    你的问题在这方面。您正在尝试将activity转换为getFirstWeatherInterface

    getFirstWeatherInterface getFirstWeather = (getFirstWeatherInterface) getActivity();