Android Fragmentの標準表記


Fragmentについては諸説あるが、いいと言う人もいれば、悪いと言う人もいる.ここでは議論しないで、Fragmentの標準的な書き方に重点を置いて、工場の方法を使ってFragmentを生成することから、どのようにコールバックインタフェースを書くか、どこでコールバックインタフェースを実現するか、どこでコールバックインタフェースを抹消するかを紹介します.
標準表記
**
 *      Fragment  
 *     Master_Fragment Activity        Master_Fragment.OnFragmentInteractionListener
 *        Fragment Activity     
 *             Master_Fragment#newInstance
 *    Master_Fragment   .
 */
public class Master_Fragment extends Fragment {
    //             
    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";

    //                    
    private String mParam1;
    private String mParam2;

    private OnFragmentInteractionListener mListener;

    /** *          Fragment   *    Fragment         * * @param param1   1. * @param param2   2. * @return Master_Fragment   . */
    public static Master_Fragment newInstance(String param1, String param2) {
        Master_Fragment fragment = new Master_Fragment();
        Bundle args = new Bundle();
        args.putString(ARG_PARAM1, param1);
        args.putString(ARG_PARAM2, param2);
        fragment.setArguments(args);
        return fragment;
    }

    public Master_Fragment() {
        // Required empty public constructor
    }

    @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) {
        return inflater.inflate(R.layout.fragment_master_, container, false);
    }

    // TODO: Rename method, update argument and hook method into UI event
    public void onButtonPressed(Uri uri) {
        if (mListener != null) {
            mListener.onFragmentInteraction(uri);
        }
    }


    /** *onAttach          Activity      */
    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        try {
            mListener = (OnFragmentInteractionListener) activity;
        } catch (ClassCastException e) {
            throw new ClassCastException(activity.toString()
                    + " must implement OnFragmentInteractionListener");
        }
    }

    /** * onDetach      */
    @Override
    public void onDetach() {
        super.onDetach();
        mListener = null;
    }

    /** *            Master_Fragment  Activity   *    Fragment Activity      *         * "http://developer.android.com/training/basics/fragments/communicating.html" * >Communicating with Other Fragments</a> . */
    public interface OnFragmentInteractionListener {
        //         
        public void onFragmentInteraction(Uri uri);
    }

}

注意点
  • newInstanceファクトリメソッドを使用してFragmentのインスタンス
  • を生成することを推奨する.
  • ActivityとFragmentの直接的な相互接続はコールバックインタフェースを使用して
  • を完了する.
  • onAttachでインタフェースを傍受し、onDetachでインタフェース
  • をログアウトする
    以上のコードはAndroid Studio自動生成の詳細については、「」を参照してください.http://developer.android.com/training/basics/fragments/communicating.html”