Everything works fine until I wait for about 5 to 6 minutes and then again do the same process of add a particular fragment and setting adapter of my ListView and I get this error:java.lang.IllegalStateException當我設置的ListView適配器一些空閒時間
java.lang.IllegalStateException: Observer [email protected] was not registered.
at android.database.Observable.unregisterObserver(Observable.java:69)
at android.widget.BaseAdapter.unregisterDataSetObserver(BaseAdapter.java:42)
at android.widget.AbsListView.onDetachedFromWindow(AbsListView.java:3453)
at android.view.View.dispatchDetachedFromWindow(View.java:14532)
at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3133)
at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3130)
at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3130)
at android.view.ViewGroup.removeViewInternal(ViewGroup.java:4497)
at android.view.ViewGroup.removeViewInternal(ViewGroup.java:4470)
at android.view.ViewGroup.removeView(ViewGroup.java:4402)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1002)
at android.app.FragmentManagerImpl.removeFragment(FragmentManager.java:1187)
at android.app.BackStackRecord.run(BackStackRecord.java:798)
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
at android.app.FragmentManagerImpl$1.run(FragmentManager.java:452)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5942)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)
我得到這個錯誤之前叫什麼一段代碼後:
btnWith.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (!withActive) {
btnWith.setBackgroundColor(Color.parseColor("#FF6F00"));
btnDepo.setBackgroundColor(Color.parseColor("#FF8F00"));
trans = manager.beginTransaction();
trans.remove(depoFrag);
trans.add(R.id.placeInMain, withFrag, "Withdrawals Fragment");
trans.commit();
depoActive = false;
withActive = true;
}
}
上面的代碼中我的MainActivity.java的onCreate()接着在onActivityCreated中調用它()
private void updateTheAdapter() {
adapter = new SimpleAdapter(getActivity(), postList,
R.layout.balance_row_withdrawal, new String[]{TAG_AMOUNT, TAG_REASON,
TAG_DONE_AT_TIME, TAG_DONE_AT_DATE,TAG_ID}, new int[]{R.id.tvListAmount, R.id.tvListReason,
R.id.tvListTime, R.id.tvListDate,R.id.tvIDWithdraw})};
}
Note : Everything works fine until the phone is left idle for 5 to 6 minutes. Please help me to solve this error which looks like it has something to do with Observer Pattern.
我試圖搜索片段...如果它不是空的,那麼只有我刪除它。但它不能成爲問題,因爲它可以工作,直到設備閒置一段時間@JMLord –
是的,我認爲延遲可能會使這個假設失效。然而,當試圖刪除一個不存在的視圖時,問題肯定會出現,因爲'ViewGroup.removeView'是堆棧跟蹤的一部分,'未註冊'是最後一個錯誤... –
對不起,讓我糾正:視圖在那裏,因爲刪除視圖被執行和分派(正如我們可以在堆棧跟蹤中看到的那樣)。但是,在ListView中出現問題,就好像它沒有正確註冊爲DataSetObserver(無論如何)。 –