【发布时间】:2020-07-15 20:42:44
【问题描述】:
我正在build.gradle 中开发一个 android 项目
android {
compileSdkVersion 25
}
dependencies {
implementation 'com.android.support:support-v13:25.+'
}
我有一个名为 HistoryFragment.java 的类
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,正如我们在下一张图片中看到的那样
【问题讨论】:
-
android.support类已全部弃用,不再接收错误修复或新功能,并且不应在新代码中使用。你应该migrate to AndroidX。自您使用的版本以来,已修复 许多 片段错误。我不知道这是否是其中之一,但这是我会尝试的第一件事,因为您使用的代码非常过时。 -
你为什么不使用
androidx.*api 而不是android.support.*??android.*更简单健壮的统一api
标签: android android-fragments fragmenttransaction