【发布时间】:2018-02-13 13:06:43
【问题描述】:
第一次尝试时,应用运行良好。但是在重新创建 HomeActivity 之后,我遇到了异常 android.os.BadParcelableException: Parcelable protocol requires an Parcelable.Creator object called CREATOR on class
现在我对如何以及在哪里创建 CREATEOR 感到困惑?
这是我的界面。
public interface OnRefreshListener extends Parcelable {
void refresh();
}
这是我的活动。
public class HomeActivity extends AppCompatActivity {
private OnRefreshListener refreshListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
refreshListener = new OnRefreshListener() {
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {}
@Override
public void refresh() {
// my code
}
};
}
}
这是我的片段
public class TestFragment extends Fragment {
public static TestFragment newInstance(OnRefreshListener refreshListener) {
TestFragment testFragment = new TestFragment();
Bundle bundle = new Bundle();
bundle.putParcelable("onRefreshListener",refreshListener);
testFragment.setArguments(bundle);
return testFragment;
}
.
.
.
}
【问题讨论】:
-
在什么奇怪的场景下你需要一个可打包的监听器?
-
通过捆绑为我的片段设置参数我需要它@Tim castelijns
-
为什么需要通过 bundle 将监听器传递给片段?
-
我只是给出了代码示例。真实代码不同,但场景相同。
-
如果场景相同,那么我的问题仍然存在 - 为什么要通过捆绑包传递侦听器?