正如标题所述,我想打开一个片段,它位于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)?
TableFragment
正在扩展Fragment
的AndroidX版本。 承载它的activity需要从AndroidXFragmentActivity
扩展。
AppCompatActivity
执行此操作,但由于某种原因,您不希望使用它。 这很好,因为您可以自己从fragmentactivity
扩展。
如果您不希望这样做,那么您的activity将无法显示tablefragment
。 您需要让tablefragment
扩展fragment
的框架版本,这是不推荐使用的。