首页 > 解决方案 > 如何在 Activity(非 AppCompatAcitivity)中打开片段?

问题描述

正如标题所述,我想打开一个位于 Activity(Non AppCompatActivity) 中的 Fragment

代码:

TableFragment fragment = new TableFragment();
  fragment.setArguments(bundle);
  View view = (View) findViewById(R.id.Example);
  AppCompatActivity activity = (AppCompatActivity) view.getContext().getApplicationContext();
  FragmentTransaction ft = activity.getSupportFragmentManager().beginTransaction();
  ft.replace(R.id.idFragment, fragment);
  ft.commit();

错误: 原因:

java.lang.ClassCastException: android.app.Application cannot be cast to androidx.appcompat.app.AppCompatActivity

也试过:

Activity activity = (Activity) this;
FragmentManager fragmentManager = activity.getFragmentManager();
FragmentTransaction ft= fragmentManager.beginTransaction();
TableFragment fragment = new TableFragment();
ft.replace(R.id.idFragment, fragment);
ft.commit();

错误:

Required type: androidx.fragment.app.FragmentTransaction
Provided: android.app.FragmentTransaction

问题:如何在 Activity 中打开 Fragment(非 AppCompatActivity)?

标签: javaandroidxmlandroid-fragmentsandroid-activity

解决方案


TableFragment正在扩展Fragment. 托管它的活动需要从 AndroidX 扩展FragmentActivity

AppCompatActivity这样做,但由于某种原因你不想使用它。这很好,因为你可以从FragmentActivity自己身上扩展。

如果您不想这样做,那么您的活动将无法显示TableFragment。您需要扩展已弃用TableFragment的框架版本。Fragment


推荐阅读