我有一個DialogFragment,允許用戶在同一個Fragment中篩選和搜索。過濾器通過使用回調接口將數據傳回主機活動/片段來工作。這似乎工作的偉大,直到我增加了一個搜索查看到DialogFragment當我輸入文字,點擊搜索它的工作原理,但隨後引發以下expception和崩潰:使用回調傳回DialogFragment中的數據(android)
Parcelable encountered IOException writing serializable object (name = com.braden.android.fragments.ListItemFragment$6)
...
Caused by: java.io.NotSerializableException: com.braden.android.fragments.ListItemFragment
要做回調我使用了一個相當標準的回調接口模式。該接口擴展了Serializable。下面是我的回調代碼:
private void displayFilter() {
FilterCategoryDialogFragment filterCategoryDialogFragment = new FilterCategoryDialogFragment();
Bundle bundle = new Bundle();
mOnFilterClickListener = new OnFilterClickListener() {
@Override
public void onCategoryClickListener(String filterName) {
updateVenues(mFilter);
}
};
bundle.putSerializable("listenerFilter",
mOnFilterClickListener);
filterCategoryDialogFragment.setArguments(bundle);
filterCategoryDialogFragment.show(getFragmentManager(), DIALOG_CATEGORY_FILTER);
}
這似乎有事情做與使用實現匿名內部類序列化的,所以我想知道:
1)爲什麼說我只有我當我使用SearchView時收到此異常,而不是執行通過回調發送回數據的操作,或者只是單擊對話框。
2)有沒有解決方法,或者這只是一個壞模式供我使用。