我有一个片段,从我的活动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()
,onDestroy
或onPaused
方法内部发送对活动的响应,其中任何一种都适合您。我更喜欢onDetach
或onDestroy
这是该示例:
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
}
}