0

在一个活动中,当我向我刚刚使用的服务发送意图时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) 进行静态引用

4

1 回答 1

4

Fragments 附加到 an Activity,这是一个子类Context- 将您的sendBroadcast调用(试图使用外部类' sendBroadcast)替换为getActivity().sendBroadcast- 这将使用Context与当前附加到Activity的关联。Fragment

于 2013-09-08T19:03:48.613 回答