컨트롤---fragment 사용(1)

4680 단어 컨트롤
Fragment 의 사용 은 보통 두 가지 장면 으로 나 눌 수 있 습 니 다.하 나 는 Fragment 와 ViewPager 가 연결 되 고 다른 하 나 는 Fragment 가 단독으로 사용 합 니 다.
1.Fragment 와 ViewPager 연결
1.activity xml 에 ViewPager 컨트롤 추가

2.Fragment(v4 패키지)에서 계승 하 는 클래스 를 새로 만 듭 니 다.Fragment 1(가방 에서 new-fragment-blank fragment 를 오른쪽 단추 로 누 를 수 있 음)이 라 고 이름 을 지 을 수 있 습 니 다.비슷 한 것 은 여러 개 를 새로 만 들 수 있 습 니 다(viewPager 와 연결).
class Fragment1 : Fragment() {
    private var param1: String? = null
    private var param2: String? = null
    private var listener: OnFragmentInteractionListener? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        arguments?.let {
            param1 = it.getString(ARG_PARAM1)
            param2 = it.getString(ARG_PARAM2)
        }
    }

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        return inflater.inflate(R.layout.fragment_fragment1, container, false)
    }

    fun onButtonPressed(uri: Uri) {
        listener?.onFragmentInteraction(uri)
    }

    override fun onAttach(context: Context) {
        super.onAttach(context)
        if (context is OnFragmentInteractionListener) {
            listener = context
        } else {
            throw RuntimeException(context.toString() + " must implement OnFragmentInteractionListener")
        }
    }

    override fun onDetach() {
        super.onDetach()
        listener = null
    }

    //          ,activity    ,      fragment activity   
    interface OnFragmentInteractionListener {
        fun onFragmentInteraction(uri: Uri)//         
    }

    companion object {
        private const val ARG_PARAM1 = "param1"
        private const val ARG_PARAM2 = "param2"
        @JvmStatic
        fun newInstance(param1: String, param2: String) =
                Fragment1().apply {
                    arguments = Bundle().apply {
                        putString(ARG_PARAM1, param1)
                        putString(ARG_PARAM2, param2)
                    }
                }
    }
}

3.Fragment Adapter 에서 계승 하 는 클래스 를 새로 만 듭 니 다.MyFragment Adapter 라 고 명명 할 수 있 습 니 다.
class MyFragmentAdapter(fm: FragmentManager, fragments: MutableList) : FragmentPagerAdapter(fm) {

    private var fragmentList: MutableList = fragments

    override fun getItem(position: Int): Fragment {
        return fragmentList[position]
    }

    override fun getCount(): Int {
        return fragmentList.size
    }

}

4.준비 작업 이 완료 되면 Activity 의 코드 를 추가 합 니 다.Fragment Activity 류 를 계승 해 야 합 니 다.
class MyFragmentActivity : FragmentActivity()
        , Fragment1.OnFragmentInteractionListener
        , Fragment2.OnFragmentInteractionListener {

    override fun onFragmentInteraction222(string: String) {
        Log.d("baibai", "onFragmentInteraction222")
        Log.d("baibai", string)
    }

    override fun onFragmentInteraction(uri: Uri) {

    }

    private lateinit var mFragments: MutableList
    private lateinit var mFragment1: Fragment1
    private lateinit var mFragment2: Fragment2
    private lateinit var mFragmentAdapter: MyFragmentAdapter

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_my_fragment)

        initFragment()
        initListener()

    }

    private fun initFragment() {
        mFragment1 = Fragment1.newInstance("bai", "yun")
        mFragment2 = Fragment2.newInstance("111", "222")
        mFragments = mutableListOf()
        mFragments.add(mFragment1)
        mFragments.add(mFragment2)
    }

    private fun initListener() {
        mFragmentAdapter = MyFragmentAdapter(this.supportFragmentManager, mFragments)
        vp_fragment.adapter = mFragmentAdapter
        vp_fragment.setOnPageChangeListener(object : ViewPager.OnPageChangeListener {
            override fun onPageScrollStateChanged(state: Int) {

            }

            override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
             //      
            }

            override fun onPageSelected(position: Int) {
            //viewPager        
            }

        })
    }

}

 

좋은 웹페이지 즐겨찾기