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
}
}
'Study > Android' 카테고리의 다른 글
안드로이드 풀 스크린 Full Screen 화면 꽉 차게 변경하기 (1) | 2023.02.16 |
---|---|
안드로이드 스레드에 대한 공부 (작성중) (0) | 2023.02.14 |
Android 액티비티 생명주기 lifecycle 관리 (0) | 2023.01.31 |
Android Stuido - Palette 구성요소 정리 (2) Text (0) | 2023.01.23 |
Android Stuido - Palette 구성요소 정리 (1) Common (0) | 2023.01.21 |