【发布时间】:2018-03-17 04:00:40
【问题描述】:
我正在我的应用程序中创建一个视图寻呼机,并使用一个在其上扩展 Fragment 的类。当我创建一个实例时,我可以传递所有元素(图像、文本等)并将其与 Bundle 一起存储以在 onCreate 中使用它。但我无法在片段中存储按钮的侦听器。这是我的课:
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本身中定义OnClickListener来处理点击呢?我认为在托管 UI 的活动/片段之外的其他地方有任何 UI 回调是不好的做法。
-
@Headcracker 我需要从活动中传递它。
标签: java android android-fragments fragment