java - 如何在 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)?
解决方案
TableFragment
正在扩展Fragment
. 托管它的活动需要从 AndroidX 扩展FragmentActivity
。
AppCompatActivity
这样做,但由于某种原因你不想使用它。这很好,因为你可以从FragmentActivity
自己身上扩展。
如果您不想这样做,那么您的活动将无法显示TableFragment
。您需要扩展已弃用TableFragment
的框架版本。Fragment
推荐阅读
- javascript - 使用jquery获取动态生成的表中单元格的值
- prolog - 如何使用 Prolog 使规则返回事实的所有详细信息
- python - 如何将一维插值转换为二维插值?
- reactjs - “测试完成后无法登录。” 重复调用 render(
) 在测试中 - php - 未使用 Bootstrap 4 无效工具提示
- java - java中的字符串实习生、字符串连接和字符串常量池示例
- c++ - 这个解除引用指针的例子有什么区别?
- tcl - 如何让 tcl 后台 proc 等待文件?
- javascript - 我无法向用户发送任何消息
- flutter - 在 ListView 中颤动 z-index - 不在堆栈中