我试图在一个片段中初始化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)
答案 0 :(得分:0)
片段本身不是Context
,但它们具有getContext()
方法,该方法返回一个Context
对象,您可以传递该对象而不是this
:
notManager = NotificationManagerCompat.from(getContext());
请注意,最新版本的Fragments还包含一个requireContext()
,它返回一个保证为非空的Context
。您应该考虑使用它来避免在需要非空Context时出现Lint警告有关使用可空Context的警告。