(NotificationManagerCompat中的(android.content.Context)不能应用于

时间:2019-06-14 23:00:11

标签: java android

我试图在一个片段中初始化NotificationManagerCompat,但是显然我不能这样做,因为它需要在活动中初始化。这是我尝试片段化时遇到的代码和错误

所以我想知道的是,如果我将所有通知代码初始化并将其移至MainActivity,是否仍可以从片段中调用它?原因我希望片段中的计时器完成时触发警报。还是有其他方法可以使其在我的片段中工作?只是不确定如何执行此操作。谢谢!

private NotificationManagerCompat notManager;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        final View view = inflater.inflate(R.layout.fragment_timer, container, false);

        notManager = NotificationManagerCompat.from(this);

//this is error I get from passing in this

(android.content.Context)
in NotificationManagerCompat cannot be applied
to
(x.gmail.com.insulincalc.TimerFragment)

1 个答案:

答案 0 :(得分:0)

片段本身不是Context,但它们具有getContext()方法,该方法返回一个Context对象,您可以传递该对象而不是this

notManager = NotificationManagerCompat.from(getContext());

请注意,最新版本的Fragments还包含一个requireContext(),它返回一个保证为非空的Context。您应该考虑使用它来避免在需要非空Context时出现Lint警告有关使用可空Context的警告。