ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Android Studio] setContentView와 LayoutInflater.inflate의 차이
    App/Android 2022. 2. 10. 00:44

    둘 다 xml을 inflate 함으로써 뷰바인딩을 하는 데에 사용되지만
    setContentViewActivity의, LayoutInflater.inflateFragment의 뷰바인딩에 사용된다.

    더보기

    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

    댓글

Designed by Tistory.