如何从片段中调用getSupportFragmentManager()?

问题描述 投票:0回答:4

我想在我的代码中使用自定义日期和时间选择器,因为我创建了一个单独的包,并将所有日期和时间选择器类放在那里。如果我从主活动运行它,代码运行顺利但是当我想从一个片段调用时,它不能识别getSupportFragmentManager()方法,我从我的片段中调用的是:

SimpleDateTimePicker simpleDateTimePicker = SimpleDateTimePicker.make(
            "Set Date & Time Title",
            new Date(),
            this,
            getSupportFragmentManager()
    );

    simpleDateTimePicker.show();

请帮忙,谢谢你们。

android fragment datetimepicker
4个回答
0
投票

你没有。

你需要从片段中调用getChildFragmentManager()。试图调用getActivity().getSupportFragmentManager()会引发错误。


0
投票

首先检查你的frgamentsandroid.support.v4.app.Fragmentandroid.app.Fragment扩展。如果它是android.app.Fragment然后调用getActivity().getFragmentManager();或者如果它从支持frgament延伸然后调用getActivity().getSupportFragmentManager();


0
投票

看起来像SimpleDateTimePicker类是你自己的类,它只接受android.app.FragmentManager,而不是android.support.v4.app.FragmentManager。因此,您只能将该类用于API11或更高版本。如果你想使用android.support.v4.app.FragmentManager,你需要编辑你的SimpleDateTimePicker接受构造函数中的android.support.v4.app.FragmentManager

编辑:

好的,有两个不同的类:android.app.FragmentManagerandroid.support.v4.app.FragmentManager。第二个是第一个的兼容性实现。大多数应用程序使用第二个,因为它允许在API 11之前使用。并且链接中的类使用第一个。有两种方法可以解决它: 1 - 你开始使用android.app.FragmentManager而不是android.support.v4.app.FragmentManager。这将导致应用程序仅在api 11之上工作。 第二种方式是改变SimpleDateTimePicker的代码使用android.support.v4.app.FragmentManager。我认为这是更正确的方式。


0
投票

这对我有用

getBaseActivity().getFragmentManager()

试试吧。

© www.soinside.com 2019 - 2024. All rights reserved.