-
[Android Studio] setContentView와 LayoutInflater.inflate의 차이App/Android 2022. 2. 10. 00:44
둘 다 xml을 inflate 함으로써 뷰바인딩을 하는 데에 사용되지만
setContentView는 Activity의, LayoutInflater.inflate는 Fragment의 뷰바인딩에 사용된다.더보기Inflate
xml에 적힌 요소들을 객체화함으로써 코드에서 사용할 수 있도록 함
더보기Activity vs Fragment
Activity - 화면 단위
Fragemnt - Activity를 구성하는 작은 화면
Activity와 Fragment의 차이
생명주기의 차이
- Activity는 onCreate 메서드로 생성되는 반면, Fragment는 View를 반환하는 onCreateView 메서드로 생성된다.
- 따라서 Fragment를 생성할 때엔 Inflate를 한 View를 반환해야 한다.
XML id 접근 방식의 차이
- Activity는 FrameLayout에 의해 제공되므로 findViewById로 view에 접근할 수 있다.
- setContentView는 내부적으로 LayoutInflater를 사용하기 때문에, findViewById로 액티비티에 접근하기 위해서는 findViewById를 사용하기 전에 setContentView가 반드시 먼저 존재해야 한다.
- Fragment는 FrameLayout이 제공하는 contentView가 없기 때문에 getView().findViewById() 와 같이 view에 접근한다.
setContentView와 LayoutInflater.inflate의 차이
- setContentView는 Inflate를 알아서(내부적으로) 수행한다.
- Fragment는 Inflate를 직접 해주어야 하므로, 사용자가 LayoutInflater.inflate로 inflate를 수행한다.
setContentView
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_home); Log.d(TAG, "onCreate: starting."); setupBottomNavigationView(); }
LayoutInflater.inflate
@Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_home, container, false); return view; }
'App > Android' 카테고리의 다른 글
[Android Studio] TextView 글자 잘림 현상 (0) 2020.11.26 [Android Studio] xml 줄 바꿈 (0) 2020.11.24