안드로이드 앱 개발

Modern Android Development - ViewBinding(뷰바인딩) 하는 방법 (Java/Kotlin) - Activity/Fragment 22.05.23 버전 본문

Modern Android Development

Modern Android Development - ViewBinding(뷰바인딩) 하는 방법 (Java/Kotlin) - Activity/Fragment 22.05.23 버전

스텝바이스텝안드로이드 2021. 3. 28. 16:21

1. Java

 

step1. 먼저 build.gradle(:app)에

 buildFeatures {
        viewBinding = true
    }

위와 같은 속성을 추가해준다.

 

step2. 
액티비티 전역에 바인딩 변수를 선언해주고

ActivityMainBinding binding = null;

onCreate에서 연결해주면 된다.

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = ActivityMainBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());
    }

 

2. Kotlin

 

step1은 동일하다.

 

step2

* 액티비티에서 사용하는 경우

 

변수 선언 및 onCreate에서 적용

private lateinit var binding: ResultProfileBinding

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = ResultProfileBinding.inflate(layoutInflater)
    setContentView(binding.root)
}

위 경우 destroy시 자동으로 삭제 되는 듯 하다.

 

* 프래그먼트에서 사용하는 경우

 

변수 선언 및 적용

private var _binding: ResultProfileBinding? = null
// This property is only valid between onCreateView and
// onDestroyView.
private val binding get() = _binding!!


override fun onCreateView(
    inflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    _binding = ResultProfileBinding.inflate(inflater, container, false)
    return binding.root
}

override fun onDestroyView() {
    super.onDestroyView()
    _binding = null
}

프래그먼트에서 사용하는 경우 꼭 onDestroyView에서 삭제를 해줘야 메모리 낭비를 줄일 수 있다고 함