如何在Fragment中注册Receiver [英] How to registerReceiver in Fragment
问题描述
我在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
很明显,一两个东西不属于这里,例如registerReceiver
,unregisterReceiver
和RESULT_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();
}
}
以registerReceiver
,unegisterReceiver
和if(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屋!