본문 바로가기
Study/Android

Fragment에서 Context 사용하기

by USAGI_ 2023. 2. 8.

Activity에서 사용하는 this는 fragment에서 사용할 수 없다.

 

따라서 fragment에서 context를 사용하기 위해서는 fragment에서 정의되어있는 메서드를 사용하자!

 

1) getActivity() - activity로 기재하여도 가능 ! (null 허용)

@Nullable
final public FragmentActivity getActivity() {
    return mHost == null ? null : (FragmentActivity) mHost.getActivity();
}

 

2) requireActivity() - 분명한 값 (NonNull 일 때 사용)

@NonNull
public final FragmentActivity requireActivity() {
    FragmentActivity activity = getActivity();
    if (activity == null) {
        throw new IllegalStateException("Fragment " + this + " not attached to an activity.");
    }
    return activity;
}

 

3) 따로 클래스를 만든 후 manifest name에 추가하여 사용할 수도 있다. (아래의 경우 App.instance를 입력)

<application> android:name=".App" </application>

 

import android.app.Application

class App : Application() {
    // context를 전역으로 받아오기 위한 클래스
    companion object {
        lateinit var instance: App
            private set
    }

    override fun onCreate() {
        super.onCreate()
        instance = this
    }
}