-
Found: 'android.preference.PreferenceFragment', required: 'androidx.fragment.app.Fragment'에러 기록 2021. 3. 11. 17:37
MainActivity에서 settingFragment를 전환하는 과정에서
Found: 'android.preference.PreferenceFragment', required: 'androidx.fragment.app.Fragment'
오류가 발생했다.
PreferenceFragment settingFragment;
PreferenceFragment를 이용해 설정 화면을 만들어 줄 settingFragment를 선언 후 다음과 같이 SettingFragment에 PreferenceFragment를 extends 하면
public class SettingFragment extends PreferenceFragment implements Preference.OnPreferenceChangeListener {
다음과 같이 settingFragment에 빨간 줄이 생기면서
Found: 'android.preference.PreferenceFragment', required: 'androidx.fragment.app.Fragment' 오류가 발생한다.
settingFragment가 PreferenceFragment가 아니라 그냥 Fragment를 extends 해야 한다는 말이다.
오류 해결 방법
1. settingFragment에 Fragment를 extends 한다.
2. settingFragment 안에 PreferenceFragment를 extends 하는 MyPreferenceFragment 클래스를 선언해서
사용한다.
public class SettingFragment extends Fragment { @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); getActivity().getFragmentManager().beginTransaction() .replace(R.id.main_frame,new MyPreferenceFragment()) .commit(); } public static class MyPreferenceFragment extends PreferenceFragment implements Preference.OnPreferenceChangeListener{ public static final String USER_PHONE = "phoneNumber"; @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); ... } @Override public boolean onPreferenceChange(Preference preference, Object newValue) { ... } } }
+ 이렇게 앱을 실행하면 다른 fragment 뒤에 setting fragment 화면이 계속해서 떠있다.
모든 화면의 xml 파일에서 가장 바깥 layout에
android:background="?android:windowBackground" 을 써주면 해결 가능