잡동사니

반응형

질문

나는 build.gradle 에서 이것을 사용하여 안드로이드 프로젝트를 진행하고 있습니다.

android {
    compileSdkVersion 25
}
dependencies {
    implementation 'com.android.support:support-v13:25.+'
}

HistoryFragment.java 라는 class가 있습니다.

public class HistoryFragment extends Fragment {

    private RecentHistoryPagerAdapter historyPagerAdapter;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.view_pager, container, false);
        if (savedInstanceState == null) {
            historyPagerAdapter = new HistoryPagerAdapter(getChildFragmentManager());
            viewPager = (ViewPager) rootView.findViewById(R.id.view_pager);
            viewPager.setAdapter(historyPagerAdapter);
            setTabListeners();
        }
        return rootView;
    }

    public void viewSummary () {
        HistoryFragment historyFragment = (HistoryFragment) getActivity().getFragmentManager().findFragmentById(R.id.container);
        FragmentTransaction transaction = getActivity().getFragmentManager().beginTransaction();
        transaction.hide(historyFragment);
        
        SummaryFragment summaryFragment = SearchResultSummaryFragment.newInstance();
        transaction.add(R.id.container, summaryFragment, "summaryFragment");
        transaction.commit();
        return;

여기,

HistoryPagerAdapter extends android.support.v13.app.FragmentPagerAdapter

올바르게 작동하고 결과가 나타납니다.

예상 동작

build.gradle 에 이것을 다른 프로젝트에 복사했습니다.

android {
    compileSdkVersion 27
}
dependencies {
    implementation 'com.android.support:support-v13:27.1.1'
}

잘못 작동합니다. SummaryFragment 가 표시되는 동안 다음 이미지에서 볼 수 있듯이 historyPagerAdapter 를 유지합니다.

예기치 않은 동작


답변1

이미 의견에서 제안했듯이 프로젝트를 AndroidX 라이브러리로 전환하는 것이 좋습니다. 모듈 (프로젝트 창에서)을 마우스 오른쪽 button으로 클릭 한 다음 리팩터링 ... 을 선택한 다음 AndroidX로 마이그레이션 ... 을 선택하면 쉽게 수행 할 수 있습니다.

그런 다음 Android 스튜디오는 gradle 종속성을 새로운 androidx 종속성으로 교체하고 이에 따라 모든 import 문을 변경합니다. 대규모 다중 모듈 프로젝트에서도이 작업을 수행했으며 거의 매번 완벽하게 작동했습니다. 여기저기서 가져오기를 조정해야 할 수도 있습니다.

질문에 따라 조각에 대한 새로운 등급 종속성은 implementation 'androidx.navigation : navigation-fragment-ktx : 2.3.0'입니다 (Java를 사용하는 경우 "-ktx"없음).

android.support anroidx. 를 섞어서는 안됩니다. 둘 중 하나입니다. 둘 다 함께 작동하지 않습니다!

모든 새로운 종속성에 대한 개요는 https://developer.android에서확인할수있습니다..com/jetpack/androidx/migrate/class-mappings



 

 

 

 

출처 : https://stackoverflow.com/questions/62923449/fragmenttransaction-behaving-differently-for-different-android-sdk-releases

반응형

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band