Exception:must implement OnFragmentInteractionListener
来源:互联网 发布:手机域名 编辑:程序博客网 时间:2024/06/14 23:21
转载请注明出处:http://blog.csdn.net/parallelyk/article/details/51510569
今天写代码的时候发现,用Android Studio创建一个blank Fragment的时候会为我们创建一个Fragment的模板。
public class MainFragment extends Fragment { // TODO: Rename parameter arguments, choose names that match // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER private static final String ARG_PARAM1 = "param1"; private static final String ARG_PARAM2 = "param2"; // TODO: Rename and change types of parameters private String mParam1; private String mParam2; private OnFragmentInteractionListener mListener; public MainFragment() { // Required empty public constructor } /** * Use this factory method to create a new instance of * this fragment using the provided parameters. * * @param param1 Parameter 1. * @param param2 Parameter 2. * @return A new instance of fragment MainFragment. */ // TODO: Rename and change types and number of parameters public static MainFragment newInstance(String param1, String param2) { MainFragment fragment = new MainFragment(); Bundle args = new Bundle(); args.putString(ARG_PARAM1, param1); args.putString(ARG_PARAM2, param2); fragment.setArguments(args); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getArguments() != null) { mParam1 = getArguments().getString(ARG_PARAM1); mParam2 = getArguments().getString(ARG_PARAM2); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_main, container, false); } // TODO: Rename method, update argument and hook method into UI event public void onButtonPressed(Uri uri) { if (mListener != null) { mListener.onFragmentInteraction(uri); } } @Override public void onAttach(Context context) { super.onAttach(context); if (context instanceof OnFragmentInteractionListener) { mListener = (OnFragmentInteractionListener) context; } else { throw new RuntimeException(context.toString() + " must implement OnFragmentInteractionListener"); } } @Override public void onDetach() { super.onDetach(); mListener = null; } /** * This interface must be implemented by activities that contain this * fragment to allow an interaction in this fragment to be communicated * to the activity and potentially other fragments contained in that * activity. * <p/> * See the Android Training lesson <a href= * "http://developer.android.com/training/basics/fragments/communicating.html" * >Communicating with Other Fragments</a> for more information. */ public interface OnFragmentInteractionListener { // TODO: Update argument type and name void onFragmentInteraction(Uri uri); }}
其中有一段:
if (context instanceof OnFragmentInteractionListener) { mListener = (OnFragmentInteractionListener) context; } else { throw new RuntimeException(context.toString() + " must implement OnFragmentInteractionListener"); }
即我们的context也就是Activity必须实现OnFragmentInteractionListener。
那么OnFragmentInteractionListener是什么东西?
在一个Activity中往往有多个Fragment,他们之间是无法直接通信的,所以Fragment需要通过它们所绑定的Activity作为中介来进行通信。而OnFragmentInteractionListener就是用来实现不同Fragment之间通信的接口。OnFragmentInteractionListener在OnAttach阶段注册并复制给mListener。
使用:在Fragment中直接调用mListener.OnFragmentInteractionListener(uri)
mListener.OnFragmentInteractionListener(uri)
在Activity中通过
@Override public void onFragmentInteraction(Uri uri) { //做想要做的数据操作和通信,如给其他Fragment发送数据 sendMsgTo(otherFragment,uri); }
0 0
- Exception:must implement OnFragmentInteractionListener
- 关于 Activity 中 must implement OnFragmentInteractionListener 的问题
- must implement OnFragmentInteractionListener/ Fragment与Activity,Fragment与Fragment之间的信息传递
- Custom QAbstractItemView must implement functions
- must implement the inherited abstract method 问题解决
- composite-id class must implement Serializable
- composite-id class must implement Serializable
- How do you implement global iPhone Exception Handling?
- java-No exception of type ConfigurationException can be thrown; an exception type must be a subclass
- The method execute() of type XXXX must override or implement a supertype method
- The given filter instance must implement one or more of the following filter interfaces
- 部分函数重载提示,父类没有该函数,must override or implement a supertype method
- 联合主键配置时忽略的问题composite-id class must implement Serializable
- The method xxx of type xxx must override or implement a supertype me
- 解决The method onClick(View)... must override or implement a supertype method
- The method of type must override or implement a supertype method解决办法
- 提示有错:The type new View.OnClickListener(){} must implement the inherited abstract method View.OnClick
- The type new View.OnClickListener(){} must implement the inherited abstract method View.OnClickListe
- IOS-Frameworks-UIKit-UIApplication-UIApplicationDelegate
- bash 函数
- unix
- python之list、tuple、dict、set对比
- HDU 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
- Exception:must implement OnFragmentInteractionListener
- linux基本命令(37)——date命令
- 轮播小圆点
- Java中的权限
- JAVA 常用时间日期计算转换方法
- 测试web应用程序搜索SQL注入漏洞
- 计算机网络
- cf#354
- # USACO4.4 三道题