提问者:小点点

如何在activity中打开片段(非AppCompatactivity)? [安卓]


正如标题所述,我想打开一个片段,它位于activity中(非AppCompatActivity)

代码:

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中打开片段(非AppCompatActivity)?


共1个答案

匿名用户

TableFragment正在扩展Fragment的AndroidX版本。 承载它的activity需要从AndroidXFragmentActivity扩展。

AppCompatActivity执行此操作,但由于某种原因,您不希望使用它。 这很好,因为您可以自己从fragmentactivity扩展。

如果您不希望这样做,那么您的activity将无法显示tablefragment。 您需要让tablefragment扩展fragment的框架版本,这是不推荐使用的。