在一项活动中,当我向服务发送意图时,我只使用sendBroadcast
,但我不能从一个片段做同样的事情,因为一个片段必须是一个静态类。解决这个问题的最佳方法是什么?
我考虑过有一个接收上下文的方法,但是在片段的情况下这不起作用。
目前我的代码是
public static class ExampleSectionFragment extends Fragment {
public static final String ARG_SECTION_NUMBER = "section_number";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_section_example, container, false);
Bundle args = getArguments();
//Example intent to broadcast to service on button press
rootView.findViewById(R.id.action_start)
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(RECORDING_INTENT);
sendBroadcast(intent);
}
});
return rootView;
}
}
sendBroadcast在eclipse中返回错误:
无法从ContextWrapper类型中对非静态方法sendBroadcast(Intent)进行静态引用
答案 0 :(得分:4)
Fragment
附加到Activity
,它是Context
的子类 - 替换您的sendBroadcast
调用(尝试使用外部类'{{ 1}})sendBroadcast
- 这将使用与getActivity().sendBroadcast
当前附加的Context
相关联的Activity
。