gpt4 book ai didi

android - 使用 Fragment Controller 在 Android Fragment 之间转换

转载 作者:行者123 更新时间:2023-11-30 01:54:27 24 4
gpt4 key购买 nike

我是 Android 的新手,我正在尝试构建一个包含三个 fragment 的应用程序:比方说 A、B 和 C。我希望 A 上的按钮在单击时显示 B,B 上的按钮显示给我C 单击时。我知道一种方法是像这样使用 FragmentManager:在 fragment A 中,我可以有一个按钮点击监听器来执行

getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, new B())
.commit();

但是,我不希望 A 知道 fragment B,或者 B 知道 C。我正在考虑创建某种 FragmentController 来解决这个问题,这样 Controller 就会知道必要的转换并保持状态机器。

这是 Android 中的常见模式吗?我尝试使用谷歌搜索,但没有看到很多此模式的代码示例。我怎样才能解耦不同的 fragment ,这样 fragment 就不必担心转换?

谢谢。

最佳答案

是的,这是一个常见的模式,你需要了解如何在 fragment 之间进行通信。

接上,你的fragments包含在一个activity中,也许你可以做下一个:

fragment 监听器

public interface FragmentNavigationListener {
public void onNavigateTo(int fragment);
}

实现回调的Activity

public static final int Fragment FRAGMENT_A = 0;
public static final int Fragment FRAGMENT_B = 1;

@Override
public void onNavigateTo(int fragment){
switch fragment{
case FRAGMENT_A :
...
case FRAGMENT_B :
...
}
}

每个 fragment 必须确保父 Activity 实现监听器

   @Override
public void onAttach(Activity activity) {
super.onAttach(activity);

try {
mCallback = (FragmentNavigationListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement FragmentNavigationListener");
}
}

在调用监听器的每个 fragment 中的每个按钮的 OnclickListener 中。

 button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
mCallback.onNavigateTo(FRAGMENT_B);
}
});

关于android - 使用 Fragment Controller 在 Android Fragment 之间转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32495741/

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