gpt4 book ai didi

android - 多个 fragment 的一个接口(interface)

转载 作者:太空狗 更新时间:2023-10-29 16:33:06 26 4
gpt4 key购买 nike

有人可以告诉我我是否正确解决了这个问题,或者我是否应该走另一条路?

这是一个简化的示例:我有 1 个 Activity 和 2 个 fragment 。每个 Fragment 都有一个按钮,当单击该按钮时,会将单击中继回 Activity,并在 Activity 中弹出一个 Toast。

我知道 Fragment 通过接口(interface)与 Activity 通信。但是如果我有多个具有相似界面的 fragment 怎么办。例如,这里两个 Fragments 使用 onClick 类型的接口(interface)与 Activity 通信

 static interface OnClickedListener{
public void buttonClicked(View v);
}

是不是更好

A) 创建一个单独的接口(interface)类并将其附加到两个 fragment 中。例如 fragment 1:

public class Fragment1 extends Fragment implements OnClickedListener{


private OnClickedListener clickedInterface;

public Fragment1() {
// Required empty public constructor
}

@Override
public void buttonClicked(View v) {
}

@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
this.clickedInterface = (OnClickedListener)activity;
}}

fragment 2:

public class Fragment2 extends Fragment implements OnClickedListener{

private OnClickedListener clickedInterface;

public Fragment2() {
// Required empty public constructor
}

@Override
public void buttonClicked(View v) {
}

@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
this.clickedInterface = (OnClickedListener)activity;
}

B) 创建特定 Fragment 独有的单独接口(interface),并在 MainActivity 中实现这些接口(interface),而不是像上面提到的那样在一个接口(interface)中实现。谢谢。

最佳答案

首先在实现界面中创建您的自定义 fragment 。

    public class CustomFragment extends Fragment implements OnClickedListener{
public OnClickedListener clickedInterface;

@Override
public void buttonClicked(View v) {
}

@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
this.clickedInterface = (OnClickedListener)activity;
}
}

现在,您可以在每个 fragment 中添加

(i) fragment 1

public class Fragment1 extends CustomFragment {
......
}

(ii) fragment 2

public class Fragment2 extends CustomFragment {
......
}

关于android - 多个 fragment 的一个接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34827620/

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