如何获取片段之间的回调

时间:2018-06-21 12:15:01

标签: android android-fragments

我有两个片段Parent和child,现在我试图使用回调从childFragment到parentFragment获得一些值。

这是我到目前为止所尝试的:

添加子片段

 activity.getSupportFragmentManager()
                .beginTransaction()
                .replace(R.id.frame_layout, fragment).addToBackStack(null)
                .commit();

现在,我希望获得对childFragment的响应。我希望对childFragment进行buttonClick。

示例:

nearestCenter.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
           if (getFragmentManager() != null) {
        getFragmentManager().popBackStack();
    }
    }
});

PS 我知道如何使用Activity进行分段,但是有什么方法可以使回调从分段到碎片。

2 个答案:

答案 0 :(得分:0)

您可以使用以下代码。当然,您应该注意类强制转换异常和空指针异常。

private void callParentFragmentMethod(){
    ParentFragment f = (ParentFragment) getParentFragment();
    f.someMethod();
}

答案 1 :(得分:-1)

您可以使用界面进行交互:

public interface MyInterface{
  void sendMessageToParent(Parameters parameter);
}

现在像这样在您的父片段上实现它-

public class ParentFragment implements MyInterface{

  public static Myinterface myinterface;

     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
     super.onCreateView(inflater, container, savedInstanceState);

     // Register your interface like this. 
     myinterface = this;

     return view;
}      

  @Override
  public void sendMessage(Parameters Parameters){

  }
}

现在来自儿童活动的称呼如下:-

if(ParentFragment.myinterface!=null){
  ParentFragment.myinterface.sendMessageToParent(parameters);
}

可以。并确保在父级的onDestroy中将其分配为null,如下所示:-

myinterface = null;

希望这会有所帮助。