实现一个扩展 Parcelable 的接口

Implement an Interface which extends Parcelable

我想从 adapter 发送一个 listenerfragment。正如 android 建议不要使用构造函数,我通过 setArguments().

发送监听器

我无法 implement 此侦听器正常。

这是我的代码

听众:

public interface DiscoverFragmentListener extends Parcelable{

    void onSwitchToNextFragment();
}

实施:

public final class DiscoverpageListener implements DiscoverFragmentListener {
            @Override
            public void onSwitchToNextFragment() {
                mFragmentManager.beginTransaction().remove(mFragmentAtPos0)
                        .commit();
                if (mFragmentAtPos0 instanceof DummySectionFragment) {
                    Button_Description frag = new Button_Description();
                    Bundle basket = new Bundle();
                    basket.putParcelable("listener",listener);
                    frag.setArguments(basket);
                    mFragmentAtPos0 = frag;
                } else { // Instance of NextFragment
                    DummySectionFragment frag = new DummySectionFragment();
                    Bundle basket = new Bundle();
                    basket.putParcelable("listener",listener);
                    frag.setArguments(basket);
                    mFragmentAtPos0 = frag;
                }
                notifyDataSetChanged();
            }

            @Override
            public int describeContents() {
                return 0;
            }

            @Override
            public void writeToParcel(Parcel dest, int flags) {

            }
        }

DummySectionFragment:

public static class DummySectionFragment extends Fragment{



        private DiscoverFragmentListener discoverFragmentListener;

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.discover_fragment, container, false);

            discoverFragmentListener = getArguments().getParcelable("listener");
return rootView;

我收到此错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.os.Parcelable android.os.Bundle.getParcelable(java.lang.String)' on a null object reference

帮帮我!

谢谢!

给你一个更好的主意: Parcelable 就像 Serializable。

这意味着当您想要传递包含某些状态的自定义对象时,您需要将其设为 Parcelable。

在这里,您正在尝试实现其他目标。您只想设置一个回调。 正如评论中所建议的,您可以使用 setCallback / onAttach 方法来实现这一点。