将片段中的意图广播到服务

时间:2013-09-08 18:58:12

标签: android android-intent android-fragments

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

1 个答案:

答案 0 :(得分:4)

Fragment附加到Activity,它是Context的子类 - 替换您的sendBroadcast调用(尝试使用外部类'{{ 1}})sendBroadcast - 这将使用与getActivity().sendBroadcast当前附加的Context相关联的Activity