我正在尝试使用改进来解析json对象解析但是它给了我错误无法在运行时启动活动ComponentInfo ...
模型类
public class DailyWeatherResponse {
@SerializedName("city")
@Expose
private City city;
@SerializedName("cod")
@Expose
private Integer cod;
@SerializedName("message")
@Expose
private Double message;
@SerializedName("cnt")
@Expose
private Integer cnt;
@SerializedName("list")
@Expose
private List<DailyList> list = null;
public City getCity() {
return city;
}
public void setCity(City city) {
this.city = city;
}
public Integer getCod() {
return cod;
}
public void setCod(Integer cod) {
this.cod = cod;
}
public Double getMessage() {
return message;
}
public void setMessage(Double message) {
this.message = message;
}
public Integer getCnt() {
return cnt;
}
public void setCnt(Integer cnt) {
this.cnt = cnt;
}
public List<DailyList> getList() {
return list;
}
public void setList(List<DailyList> list) {
this.list = list;
}
}
api接口
@GET("forecast/daily")
Call<DailyWeatherResponse> getDailyWeather(
@Query("q") String city,
@Query("units") String uints,
@Query("cnt") String cnt,
@Query("APPID") String apiKey);
片段中的recyclerview
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this.getActivity()));
ApiInterface apiInterface = ApiClient.getRetrofit().create(ApiInterface.class);
Call<DailyWeatherResponse> call = apiInterface.getDailyWeather("London","7","metric",getResources().getString(R.string.api_key));
call.enqueue(new Callback<DailyWeatherResponse>() {
@Override
public void onResponse(Call<DailyWeatherResponse> call, Response<DailyWeatherResponse> response) {
List<DailyList> dailyLists = response.body().getList();
recyclerView.setAdapter(new DailyWeatherAdapter(dailyLists,R.layout.fragment_daily_weather,getActivity().getApplicationContext()));
}
@Override
public void onFailure(Call<DailyWeatherResponse> call, Throwable t) {
t.printStackTrace();
}
});
}
片段
的xml文件<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/week"
android:text="Today"
android:textSize="16sp"
android:textStyle="bold"
android:layout_weight="1"/>
<ImageView
android:id="@+id/dailyweatherimage"
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/weather"
android:layout_weight="1"
/>
<TextView
android:id="@+id/dailyweatherDesc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Rain"
android:textSize="16sp"
android:textStyle="bold"
android:layout_weight="1"/>
<TextView
android:id="@+id/tempDay"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="23"
android:textSize="16sp"
android:textStyle="bold"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="/"/>
<TextView
android:id="@+id/tempNight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="25"
android:textSize="16sp"
android:textStyle="bold"
/>
</LinearLayout>
recyclerview片段
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/recyclerView"
android:scrollbars="vertical"
android:clipToPadding="false"
/>
这是logcat中的错误
03-15 01:27:46.646 20132-20132/com.example.prem.weatherapplication E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.prem.weatherapplication, PID: 20132
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.prem.weatherapplication/com.example.prem.weatherapplication.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setLayoutManager(android.support.v7.widget.RecyclerView$LayoutManager)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2426)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2490)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setLayoutManager(android.support.v7.widget.RecyclerView$LayoutManager)' on a null object reference
at com.example.prem.weatherapplication.fragment.DailyWeatherFragment.onViewCreated(DailyWeatherFragment.java:51)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1314)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1595)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:757)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2355)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2146)
at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2098)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2008)
at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:388)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:607)
at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:178)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1260)
at android.app.Activity.performStart(Activity.java:6261)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2389)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2490)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
答案 0 :(得分:0)
你应该得到片段上下文而不是活动上下文,试试这个。
new LinearLayoutManager(getContext())