我想發送一個listener
從adapter
到fragment
。由於android建議不要使用構造函數,我通過setArguments()
發送監聽器。實現一個擴展Parcelable的接口
我無法正確地聽取implement
這位聽衆。
這是mycode的
監聽器:
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
幫我出去!
謝謝!
在片段上調用setter方法,提供偵聽器。你不能讓偵聽器成爲'Parcelable'。或者,更好的辦法是從'onAttach()'中的活動中拉取聽衆。 – CommonsWare
如果你沒有數據,那麼爲什麼要使用Parcelable。當你在對象中有一些數據並且你想序列化它(傳遞給下一個活動或片段)時,使用Parcelable。 – Neo