티스토리 뷰

반응형

- fragment 적용

 

탭(tab)형식 UI를 사용하려하는데 fragment가 가장 적합해서 적용해봤다

 

 

 

 

fragment 2개 먼저 생성 후 

import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import kotlinx.android.synthetic.main.activity_fragment_trmain1.*

class fragment1 : Fragment() {

    override fun onAttach(context: Context?) {
        super.onAttach(context)
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    }

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                              savedInstanceState: Bundle?): View? {

        return inflater!!.inflate(R.layout.activity_fragment_trmain1, container, false)

    }

    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
    }

    override fun onStart() {
        super.onStart()
    }

    override fun onResume() {
        super.onResume()
    }

    override fun onPause() {
        super.onPause()
    }

    override fun onStop() {
        super.onStop()
    }

    override fun onDestroyView() {
        super.onDestroyView()
    }

    override fun onDestroy() {
        super.onDestroy()
    }

    override fun onDetach() {
        super.onDetach()
    }

}

 

 

탭을 띄울 액티비티에 추가

class TravelMainpage : AppCompatActivity() {

    val manager = supportFragmentManager

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

	// 먼저 첫 탭 보여주기 (default)
        ShowTabOne() 
        
        // 버튼1 클릭 시 탭1 내용 띄우기
        tab1_btn_trmain.setOnClickListener {
            ShowTabOne()
        }
        
        // 버튼2 클릭 시 탭2 내용 띄우기
        tab2_btn_trmain.setOnClickListener {
            ShowTabTwo()
        }
    }
    
    // 함수 작성
    fun ShowTabOne(){
        val transaction = manager.beginTransaction()
        val fragment = fragment1()
        transaction.replace(R.id.fragment_holder, fragment)
        transaction.addToBackStack(null)
        transaction.commit()
    }

    fun ShowTabTwo(){
        val transaction = manager.beginTransaction()
        val fragment = fragment2()
        transaction.replace(R.id.fragment_holder, fragment)
        transaction.addToBackStack(null)
        transaction.commit()
    }
    
}

 

 

 ++++ 추가 (2020.07.16)

 

소소한 에러가 생겨서 약간 방법을 바꿔줬다.

 

[Android][Kotlin] Fragment로 탭 구조 만들기 (프래그먼트 교체)

옛날에 프래그먼트를 교체하는 방법으로 탭 구조를 구현하는 포스팅을 했었는데 두번째 탭을 누른 후, 물리 뒤로가기키를 누르면 탭과 하단 프래그먼트 짝이 맞지 않는다는점, 첫번째 탭에서 ��

yuuj.tistory.com

새로운 포스팅 참고

 

 

 

 

 

 

 

 

- 화면 전환

 

fragment는 context 타입이 아니기 때문에 평소에 액티비티에서 액티비티로 이동할때 쓰던 방식을 사용할 수 없다

 

activity - activity 화면 전환 방식

thistravel_btn_trmain.setOnClickListener {
	val intent = Intent(this, This1Test::class.java)
	startActivity(intent)
}

 

fragment - activity 화면 전환 방식

thistravel_btn_trmain.setOnClickListener {
            activity?.let{
                val intent = Intent(context, This1Test::class.java)
                startActivity(intent)
            }
        }

 

 

onActivityCreated에 추가해주면 된다

 

 

 

 

 

 

 

참고한 영상

https://youtu.be/VqEayo28VX8

 

반응형