gpt4 book ai didi

java - 实现一个扩展 Parcelable 的接口(interface)

转载 作者:行者123 更新时间:2023-11-30 01:16:32 24 4
gpt4 key购买 nike

我想从 adapter 发送一个 listenerfragment。由于 android 建议不要使用构造函数,我通过 setArguments() 发送监听器。

我无法正确实现这个监听器。

这是我的代码

听众:

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 方法来实现这一点。

关于java - 实现一个扩展 Parcelable 的接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37791039/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com