如何在Fragment中注册Receiver [英] How to registerReceiver in Fragment

查看:498
本文介绍了如何在Fragment中注册Receiver的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在ListView中显示了蓝牙设备.我以前在Activity中尝试过它,但是它起作用了,但是现在我必须将此ListView包括在Fragment

I show Bluetooth devices in a ListView. I tried it in an Activity before and it worked, but now I have to include this ListView in a Fragment

很明显,一两个东西不属于这里,例如registerReceiverunregisterReceiverRESULT_CANCELED.

It´s clear that one or two things don´t belong here, like the registerReceiver, unregisterReceiver and RESULT_CANCELED.

protected void onResume() {
    registerReceiver(receiver, filter);
     filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_STARTED);
    registerReceiver(receiver, filter);
     filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
    registerReceiver(receiver, filter);
     filter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
    registerReceiver(receiver, filter);
}

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    unregisterReceiver(receiver);


}

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        if(resultCode == RESULT_CANCELED){
            Toast.makeText(getActivity()     , "El Bluetooth debe estar activado para continuar", Toast.LENGTH_SHORT).show();
            getActivity().finish();
        }
    }

registerReceiverunegisterReceiverif(resultCode==RESULT_CANCELED){开头的行给我带来了麻烦.

The lines that start with registerReceiver, unegisterReceiver and if(resultCode==RESULT_CANCELED){ are giving me problems.

作为一个附加的事实,我试图将其更改为一个Activity而不是一个Fragment,但是我的Main类出现了一个错误,因为我正在使用Fragments.

As an aditional fact, I have tried to to change it to an Activity instead of a Fragment, but my Main class have an error with that because I am working with Fragments.

推荐答案

所有这些方法和变量都属于Activity类.因此,请考虑使用Fragment的父Activity的上下文来调用它们.

All these methods and variables belong to Activity class. So consider calling them with context of parent Activity of Fragment.

您可以按以下方式调用所需方法:

You may call required methods as:

 requireActivity().registerReceiver(receiver, filter);

 requireActivity().unregisterReceiver(receiver);


if(resultCode==RESULT_CANCELED){

可以替换为

if(resultCode == Activity.RESULT_CANCELED){

希望这可以解决您的问题.

Hope this solve your problem.

这篇关于如何在Fragment中注册Receiver的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆