我有一个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)有没有解决方法,或者这只是一个坏模式供我使用。