본문 바로가기
Android

android.app.Fragment is deprecated

by bryan.oh 2019. 6. 25.
반응형

Fragment Deprecated

안드로이드 버전 업되면서 Deprecated ... 에휴

 

아래 메소드의 파라메터인 Fragment 에 취소선이 보이네요.

마우스를 가져다가 대면 android.app.Fragment is deprecated... 라고

    public static final int PERMISSIONS_REQUEST_CODE = 1;
    public static boolean isPermissionGranted(Activity activity, Fragment fragment) {
        if (!allPermissionsGranted(activity)) {
            FragmentCompat.requestPermissions(fragment, getRequiredPermissions(activity), PERMISSIONS_REQUEST_CODE);
            return true;
        }
        return false;
    }

 

import 가 뭐로 되어있나 봤더니.

import android.app.Fragment;

 

이거를 아래 처럼 바꿉니다.

//import android.app.Fragment;
import android.support.v4.app.Fragment;

 

그럼 isPermissionGranted 도 바꿔야겠죠.

    public static final int PERMISSIONS_REQUEST_CODE = 1;
    public static boolean isPermissionGranted(Activity activity, Fragment fragment) {
        if (!allPermissionsGranted(activity)) {
//            FragmentCompat.requestPermissions(fragment, getRequiredPermissions(activity), PERMISSIONS_REQUEST_CODE);
            fragment.requestPermissions(getRequiredPermissions(activity), PERMISSIONS_REQUEST_CODE);
            return true;
        }
        return false;
    }

 

FragmentCompat 을 안쓰고 fragment 가 self 로 쓰고있네요. 

 

이런건 어떻게 알고 바꿀까요?

마우스를 가져다 대면 나오는 'android.app.Fragment is deprecated' 를 검색.

안드로이드 doc 에서 대신 뭐를 쓰라는 내용이 나옵니다. 

그 클래스를 검색해서 보면 requestPermissions 라는 메소드가 어떻게 써야 하는지 나오죠.

 

 

근데 문제는 또 있습니다.

이렇게 바꿨더니, 바꾸기 전 메소드를 호출하는 쪽에서 오류가 납니다.

저걸 호출하는 Fragment 도 import android.app.Fragment; 였죠.

이것도 바꿔줍니다.

//import android.app.Fragment;
import android.support.v4.app.Fragment;

 

그랬더니 또 이 Fragment 를 호출하는 쪽에서 오류가 나죠.

그래서 또 위와 같이 import 를 바꿔줬죠.

 

또, 다른 오류가 이어집니다.

이건 아래와 같이 바꿉니다.

getSupportFragmentManager().beginTransaction().replace(R.id.container_detect, fragment).commit();

 

여기까지 바꾸니까 이제 제대로 실행되고 deprecate 어쩌고 warning 메시지도 안뜨네요.

 

 

버전업 하면 뭔가 좋아지긴 하는건지, 그냥 문법만 바뀌는건지, -0-

728x90
반응형

댓글