gpt4 book ai didi

java - 将监听器传递给 Android 中的自定义 fragment

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:00:15 25 4
gpt4 key购买 nike

我正在我的应用程序中创建一个 View 寻呼机,并使用一个在其上扩展 Fragment 的类。当我创建一个实例时,我可以传递所有元素(图像、文本等)并将其与 Bundle 一起存储以在 onCreate 中使用它。但是我无法在 fragment 中存储按钮的监听器。这是我的类(class):

public class RegWizardFragmentInfo extends Fragment {

private static final String IMAGE = "image";
private static final String TEXT = "text";
private static final String BUTTON = "buttonText";
private View.OnClickListener buttonCallBack;

private Button button;
private int image;
private int text;
private int buttonText;


public RegWizardFragmentInfo newInstance(int image, int text, int buttonText, View.OnClickListener callback) {

RegWizardFragmentInfo fragment = new RegWizardFragmentInfo();
Bundle bundle = new Bundle();
bundle.putInt(IMAGE, image);
bundle.putInt(BUTTON, buttonText);
bundle.putInt(TEXT, text);
fragment.setArguments(bundle);
fragment.setRetainInstance(true);
return fragment;

}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.onActivityCreated(savedInstanceState);
this.image = getArguments().getInt(IMAGE);
this.text = (getArguments() != null) ? getArguments().getInt(TEXT)
: -1;
this.buttonText = (getArguments() != null) ? getArguments().getInt(BUTTON)
: -1;
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
ViewGroup rootView = (ViewGroup) inflater.inflate(
R.layout.fragment, container, false);
//Extract all the views and add the image and texts

return rootView;

}

那么,我如何存储我在 newInstance 中获得的监听器,以将其添加到 onCreateView 方法的按钮中?

感谢您的帮助。

最佳答案

您可以在Fragment 中使用回调:

public class RegWizardFragmentInfo extends Fragment {

private Button button;

private OnClickCallback callback;

public interface OnClickCallback {
void onClick();
}

@Override
public void onAttach(Context context) {
super.onAttach(context);
callback = (OnClickCallback) context;
}

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

button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
callback.onClick();
}
});
}
}

并在您的父级 Activity 中实现这个新接口(interface)

关于java - 将监听器传递给 Android 中的自定义 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46587222/

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