我有一个片段,从我的活动onCreate

android.app.FragmentManager fragmentManager = getFragmentManager();

DeviceControlFragment newFragment = new DeviceControlFragment();

newFragment.device = device;
fragmentManager.beginTransaction()
        .replace(R.id.content_frame, newFragment)
        .commit();


在片段中,我可以弹出堆栈或像这样回击:

getFragmentManager().popBackStack();


要么

getActivity().onBackPressed();


但是我需要在活动中添加一些内容,以便我知道我们已经返回到那里,是否存在类似于onActivityResult的内容,我可以在活动中覆盖该内容,以了解片段何时“完成”

最佳答案

在片段内部声明一个接口,并在您的活动中实现该接口,并在片段的onDetach()onDestroyonPaused方法内部发送对活动的响应,其中任何一种都适合您。我更喜欢onDetachonDestroy

这是该示例:

public class MyFragment extends Fragment {

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

    private Test mListener;

    public interface Test{
        void imLeavingYou();
    }

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        mListener = (Test) context;
    }

    @Override
    public void onDetach() {
        super.onDetach();
        if(mListener != null){
            mListener.imLeavingYou();
        }
    }
}


然后在您的Activity中执行以下操作:

public class MyActivity extends AppCompatActivity implements MyFragment.Test {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);
    }

    @Override
    public void imLeavingYou() {
        // Okay thanks for informing
    }
}

10-01 01:14