gpt4 book ai didi

java - 从 fragment 返回 Activity 时调用函数

转载 作者:行者123 更新时间:2023-11-29 07:25:33 25 4
gpt4 key购买 nike

我有一个 fragment ,我从我的 Activity onCreate

中这样调用
android.app.FragmentManager fragmentManager = getFragmentManager();

DeviceControlFragment newFragment = new DeviceControlFragment();

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

在 fragment 中,我可以像这样弹出返回堆栈或返回:

getFragmentManager().popBackStack();

getActivity().onBackPressed();

但我需要 Activity 中的一些东西,以便我知道我们已经返回那里,是否有类似于 onActivityResult 的东西,我可以在 Activity 中覆盖它以了解 fragment 何时“完成”

最佳答案

在 fragment 中声明一个接口(interface)并在您的 Activity 中实现它,并在 onDetach()onDestroyonPaused 方法中向 Activity 发送响应 fragment ,任何适合你的 fragment 。我更喜欢 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
}
}

关于java - 从 fragment 返回 Activity 时调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53761626/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com