【问题标题】:Can not resolve getSupportFragmentManager in non fragment class无法解析非片段类中的 getSupportFragmentManager
【发布时间】:2017-08-11 09:34:04
【问题描述】:

我想从我的片段的适配器持有者类 onClick 中添加一个片段,为了做到这一点,我尝试了下面的代码;

  @Override
public void onClick(View view) {


    try {
        Activity activity = (Activity) context;
        GalleryFragment galleryFragment = new GalleryFragment();
        activity.getSupportFragmentManager().beginTransaction()
                .addToBackStack(null)
                .add(R.id.fragment_container, galleryFragment).commit();


    } catch (Exception e) {
        e.printStackTrace();
    }

}

也试过getActivity.getSupportFragmentManager().beginTransaction() .addToBackStack(null) .add(R.id.fragment_container, galleryFragment).commit();

但出现错误无法解决 .getSupportFragmentManager()。在我的情况下如何解决?

【问题讨论】:

    标签: android android-fragments


    【解决方案1】:

    把你的Activity改成FragmentActivity

    FragmentActivity activity = (FragmentActivity) context;
    activity.getSupportFragmentManager().beginTransaction()...
    

    【讨论】:

    • 谢谢你:),愚蠢的错误,你节省了我的时间,会接受答案
    【解决方案2】:

    所以它在您的适配器类中对吗?

    把它放在你的 MainActivity 中怎么样

    public FragmentManager getFM() {
        return getSupportFragmentManager();
    }
    

    然后在你的适配器类中

    ((MainActivity) activity).getFM().beginTransaction()
                    .addToBackStack(null)
                    .add(R.id.fragment_container, galleryFragment).commit();
    

    在您的 MainActivity 中

    public void goToFragment(Fragment fragment) {
        getSupportFragmentManager().beginTransaction()
                    .addToBackStack(null)
                    .add(R.id.fragment_container, fragment).commit();
    }
    

    然后在你的适配器类中

    ((MainActivity) activity).goToFragment(galleryFragment);
    

    【讨论】:

      猜你喜欢
      • 2021-08-28
      • 1970-01-01
      • 1970-01-01
      • 2012-08-23
      • 2015-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多