日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Exception:must implement OnFragmentInteractionListener

發布時間:2023/12/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Exception:must implement OnFragmentInteractionListener 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載請注明出處: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_NUMBERprivate static final String ARG_PARAM1 = "param1";private static final String ARG_PARAM2 = "param2";// TODO: Rename and change types of parametersprivate 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 parameterspublic 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;}@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);if (getArguments() != null) {mParam1 = getArguments().getString(ARG_PARAM1);mParam2 = getArguments().getString(ARG_PARAM2);}}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// Inflate the layout for this fragmentreturn inflater.inflate(R.layout.fragment_main, container, false);}// TODO: Rename method, update argument and hook method into UI eventpublic void onButtonPressed(Uri uri) {if (mListener != null) {mListener.onFragmentInteraction(uri);}}@Overridepublic void onAttach(Context context) {super.onAttach(context);if (context instanceof OnFragmentInteractionListener) {mListener = (OnFragmentInteractionListener) context;} else {throw new RuntimeException(context.toString()+ " must implement OnFragmentInteractionListener");}}@Overridepublic 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 namevoid 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中通過

@Overridepublic void onFragmentInteraction(Uri uri) {//做想要做的數據操作和通信,如給其他Fragment發送數據sendMsgTo(otherFragment,uri);}


總結

以上是生活随笔為你收集整理的Exception:must implement OnFragmentInteractionListener的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。