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

aij0ehis  于 2022-12-02  发布在  Android
关注(0)|答案(5)|浏览(172)

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

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

    simpleDateTimePicker.show();

请帮帮忙,谢谢你们。

vu8f3i0k

vu8f3i0k1#

"你不"
您必须从片段呼叫getChildFragmentManager()。尝试呼叫getActivity().getSupportFragmentManager()将会掷回错误。

46scxncf

46scxncf2#

首先检查您的frgaments是否从android.support.v4.app.Fragmentandroid.app.Fragment扩展。如果是android.app.Fragment,则调用getActivity().getFragmentManager();;如果是从支持frgament扩展,则调用getActivity().getSupportFragmentManager();

fquxozlt

fquxozlt3#

看起来SimpleDateTimePicker类是您自己类,它只接受android.app.FragmentManager,而不接受android.support.v4.app.FragmentManager因此您只能将该类与API 11或更高版本一起使用如果您希望使用android.support.v4.app.FragmentManager,则需要编辑您SimpleDateTimePicker以在构造函数中接受android.support.v4.app.FragmentManager

编辑:

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

ugmeyewa

ugmeyewa4#

这对我有用

getBaseActivity().getFragmentManager()

试试看。

mm9b1k5b

mm9b1k5b5#

这对我很有效:
getChildFragmentManager()

相关问题