View Binding ๐Ÿ–‡

nuyHยท2022๋…„ 3์›” 18์ผ
0

Android

๋ชฉ๋ก ๋ณด๊ธฐ
2/2

์š”์ƒˆ๋Š” findByViewId๋ฅผ ์‚ฌ์šฉ ์•ˆ ํ•œ๋‹ด์„œ?
์ˆ˜์ •ํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋งˆ๋‹ค ๋‹ค ๋ณ€๊ฒฝํ•˜๋Š” ์ค‘์ด๋‹ค.
๋ทฐ๊ฐ€ ํ•œ ๋‘๊ฐœ๊ฐ€ ์•„๋‹Œ๋ฐ ์—ฐ๊ฒฐํ•˜๊ธฐ ๊ท€์ฐฎ์•˜๊ฑฐ๋“ฑ์š” ;ใ……;

๐Ÿ“ƒ build.gradle

android {
	...
	viewBinding {
		enabled = true
	}
}

๐Ÿ“ƒ RegisterActivity.class

ActivityRegisterBinding binding;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	binding = ActivityRegisterBinding.inflate(getLayoutInflater());
	setContentView(binding.getRoot());
    
    binding.nameTxt.setText("์šธ๋ž„๋ผ");
}

๐Ÿ“ƒ RegisterFragment.class

FragmentProtocolBinding binding;
@Override
public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
	binding = ResultProfileBinding.inflate(inflater, container, false);
	View view = binding.getRoot();
	return view;
}

@Override
public void onDestroyView() {
	super.onDestroyView();
	binding = null;
}    

๐Ÿ”จ onDestroyView()์—์„œ ์ •๋ฆฌํ•˜๋Š” ์ด์œ 

  • ํ”„๋ž˜๊ทธ๋จผํŠธ๋Š” ๋ทฐ๋ณด๋‹ค ์˜ค๋ž˜ ์ง€์†๋ฉ๋‹ˆ๋‹ค. ํ”„๋ž˜๊ทธ๋จผํŠธ์˜ onDestroyView() ๋ฉ”์„œ๋“œ์—์„œ ๊ฒฐํ•ฉ ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค ์ฐธ์กฐ๋ฅผ ์ •๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก findViewById์™€ ์ฐจ์ด์ 

  • NULL ์•ˆ์ „ : ์œ ํšจํ•˜์ง€ ์•Š์€ ๋ทฐ ID๋กœ ์ธํ•ด null ํฌ์ธํ„ฐ ์˜ˆ์™ธ ๋ฐœ์ƒ ์œ„ํ—˜ X, ์ผ๋ถ€ ๊ตฌ์„ฑ์—๋งŒ ๋ทฐ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๊ฒฐํ•ฉ ํด๋ž˜์Šค์—์„œ ์ฐธ์กฐ๋ฅผ ํฌํ•จํ•œ ํ•„๋“œ๊ฐ€ @Nullable๋กœ ํ‘œ์‹œ
  • ์œ ํ˜• ์•ˆ์ „ : ํด๋ž˜์Šค ๋ณ€ํ™˜ ์˜ˆ์™ธ ๋ฐœ์ƒ ์œ„ํ—˜ X

--> ๋ ˆ์ด์•„์›ƒ๊ณผ ์ฝ”๋“œ์˜ ๋น„ํ˜ธํ™˜์„ฑ์œผ๋กœ ์ธํ•ด ๋Ÿฐํƒ€์ž„์ด ์•„๋‹Œ ์ปดํŒŒ์ผ ์‹œ๊ฐ„์— ๋นŒ๋“œ๊ฐ€ ์‹คํŒจํ•˜๊ฒŒ ๋จ!

๋ฐ์ดํ„ฐ ๊ฒฐํ•ฉ๊ณผ ๋ทฐ ๊ฒฐํ•ฉ์„ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋ฉด ์ œ์ผ ์ข‹๋‹ค๊ณ  ํ•œ๋‹ค.
์ด๊ฒƒ๋„ ๊ณต๋ถ€ ์ค‘์ด๊ธฐ๋Š” ํ•œ๋ฐ ์•„์ง์€ ์„œํˆด๋Ÿฌ์„œ ๋” ๊ณต๋ถ€ํ•ด๋ณด๊ณ  ์ •๋ฆฌํ•  ์˜ˆ์ • '^'

๐Ÿ“Œ ๋ฐ”์ธ๋”ฉ ํด๋ž˜์Šค์—์„œ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๋ทฐ๊ฐ€ ์žˆ๋‹ค๋ฉด

tools:viewBindingIgnore="true"

์›ํ•˜๋Š” ๋ทฐ์˜ ๋ถ€๋ชจ ๋ ˆ์ด์•„์›ƒ์— ์ฝ”๋“œ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋ฐ”์ธ๋”ฉ์ด ๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•จ

์ฐธ๊ณ  : https://developer.android.com/topic/libraries/view-binding?hl=ko

0๊ฐœ์˜ ๋Œ“๊ธ€