从不同的类调用片段内的方法的最佳方法是什么?我通过getActivity()
将上下文传递给了班级。
((Fragment) ((Activity) context).getMainFragment()).Method();
这看起来并不合适......
答案 0 :(得分:1)
我认为你可以这样做:
创建接口OnMyDialogClickListener
和类MyDialogFragment
,它将调用已创建接口的方法
public class MyDialogFragment extends DialogFragment {
private OnMyDialogClickListener listener; public static DialogFragment newInstance(OnMyDialogClickListener listener) { DialogFragment fragment = new MyDialogFragment(listener); return fragment; } private MyDialogFragment(OnMyDialogClickListener listener) { this.listener = listener; } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { .... dialog.findViewById(R.id.button).setOnClickListener(new DialogButtonsClickListener); return dialog } private final class DialogButtonsClickListener implements View.OnClickListener { @Override public void onClick(View view) { listener.Method(); } } public static interface OnMyDialogClickListener { void Method(); }
private OnMyDialogClickListener listener; public static DialogFragment newInstance(OnMyDialogClickListener listener) { DialogFragment fragment = new MyDialogFragment(listener); return fragment; } private MyDialogFragment(OnMyDialogClickListener listener) { this.listener = listener; } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { .... dialog.findViewById(R.id.button).setOnClickListener(new DialogButtonsClickListener); return dialog } private final class DialogButtonsClickListener implements View.OnClickListener { @Override public void onClick(View view) { listener.Method(); } } public static interface OnMyDialogClickListener { void Method(); }
在目标片段中实现接口:
}
答案 1 :(得分:0)
这取决于你在做什么。
如果操作是从Fragment发出的,则应该将Fragment实例传递给执行它的类或方法。
如果这是“用户注销”或“sdcard已删除”之类的事件,则应发送本地广播并在片段中注册BroadcastReceiver。
答案 2 :(得分:0)
我经常使用的两种方法:
//#1 interface method in turn calls fragment;
((SomeInteraceOrSuperClass) getActivity).intefaceMethod();
//#2 hashmap = fragment directory;
TitleFrag titlefrag = (TitleFrag) getActivity().m_mapFrags.get(KEY_TITLEFRAG);
titleFrag.method();
答案 3 :(得分:0)
这种方式 - > https://developer.android.com/training/basics/fragments/communicating.html(界面和魔法)
请经常检查android开发人员。它包含许多关于良好实践的灵感。