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