实现一个扩展 Parcelable 的接口
Implement an Interface which extends Parcelable
我想从 adapter
发送一个 listener
到 fragment
。正如 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 方法来实现这一点。
我想从 adapter
发送一个 listener
到 fragment
。正如 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 方法来实现这一点。