0
我想在用户更改过滤器选项(本例中为学期)时更改分段的适配器。活动被破坏后,无法更改分段中的适配器
这是我的活动:
在第一时刻,下面的代码工作正常:
我活动处理学期变化
protected void onChangeSemester(String oldSemester, String newSemester) {
super.onChangeSemester(oldSemester, newSemester);
if (!oldSemester.equals(newSemester)) {
pagerAdapter.setSemester(newSemester);
}
}
然后我pagerAdapter ...
public void setSemester(String newSemester) {
gradesFragment.changeSemester(newSemester, context);
}
最后,我的片段:
public void changeSemester(String newSemester, Context context) {
this.context = context;
this.semester = newSemester;
if (adapter == null) {
adapter = createAdapter(newSemester);
setListAdapter(adapter);
}
adapter.setList(createList(newSemester));
}
然后我的适配器在changeSemester重新创建,但数据不会更新。 我已经尝试过getListView这样的:
public void changeSemester(String newSemester, Context context) {
this.context = context;
this.semester = newSemester;
if (adapter == null) {
adapter = (GradeListAdapter) getListView().getAdapter();
}
adapter.setList(createList(newSemester));
}
但它抛出:
FATAL EXCEPTION: main java.lang.IllegalStateException: Content view not yet created
at android.support.v4.app.ListFragment.ensureList(ListFragment.java:328)
at android.support.v4.app.ListFragment.getListView(ListFragment.java:222)
at si.unisanta.tcc.unisantaapp.application.fragments.grade.GradesFragment.changeSemester(GradesFragment.java:110)
at si.unisanta.tcc.unisantaapp.application.MainActivityPagerAdapter.setSemester(MainActivityPagerAdapter.java:40)
at si.unisanta.tcc.unisantaapp.application.MainActivity.onChangeSemester(MainActivity.java:210)
at si.unisanta.tcc.unisantaapp.application.AppCompatActivityToolbarBase$1$1.onClick(AppCompatActivityToolbarBase.java:64)
at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:940)
我做错了吗?它看起来像ListView引用丢失,并成为null,onCreateView没有再次调用我的片段,所以应该做什么?有一种方法可以通过重新创建片段或其他东西来修复它?
请你能否详细说明 “的活动被破坏后,代码停止工作”? – Pooya
@Pooya我第一次打开我的应用程序,它运作良好。然后通过单击主页按钮关闭它。我打开任何其他应用程序,经过一段时间,我重新打开我的应用程序,它就像我上面写的那样出现了错误。适配器被销毁,我无法获得ListView。 – Latrova