我正在尝试构建一个可在其中一个片段中扫描BLE设备的应用程序。我正在使用viewpager在选项卡之间移动。在其中一个片段中,我想使用BLE扫描功能。但是由于属于Fragment的类,我无法使用代码所需的某些功能。谁能告诉我如何解决。我如何在片段中使用代码并在viewpager中调用它。还有一个刷新按钮可以刷新列表,
product_id
我遇到的错误是(this .....),setcontentview和(applicationcontext ....),并在此处的代码中以粗体标记。
这是我的主要活动
class Bluetooth : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_bluetooth, container, false)
}
private fun isLocationPermissionEnabled(): Boolean {
return ContextCompat.checkSelfPermission(**this**, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED
}
private val bleScanner = object : ScanCallback() {
override fun onScanResult(callbackType: Int, result: ScanResult?) {
super.onScanResult(callbackType, result)
Log.d("DeviceListActivity", "onScanResult: ${result?.device?.address} - ${result?.device?.name}")
}
override fun onBatchScanResults(results: MutableList<ScanResult>?) {
super.onBatchScanResults(results)
Log.d("DeviceListActivity", "onBatchScanResults:${results.toString()}")
}
override fun onScanFailed(errorCode: Int) {
super.onScanFailed(errorCode)
Log.d("DeviceListActivity", "onScanFailed: $errorCode")
}
}
private val bluetoothLeScanner: BluetoothLeScanner
get() {
val bluetoothManager = **applicationContext**.getSystemService(Context.BLUETOOTH_SERVICE) as BluetoothManager
val bluetoothAdapter = bluetoothManager.adapter
return bluetoothAdapter.bluetoothLeScanner
}
class ListDevicesAdapter(context: Context, resource: Int) : ArrayAdapter<String>(context, resource)
override fun onCreate(savedInstanceState: Bundle?) {
Log.d("DeviceListActivity", "onCreate()")
super.onCreate(savedInstanceState)
**setContentView**(R.layout.fragment_bluetooth)
}
override fun onStart() {
Log.d("DeviceListActivity", "onStart()")
super.onStart()
bluetoothLeScanner.startScan(bleScanner)
}
override fun onStop() {
bluetoothLeScanner.stopScan(bleScanner)
super.onStop()
}
}
答案 0 :(得分:0)
1。 您可以在片段中直接使用活动或上下文引用。
因此,使用ID | HasNumber
---------------
1 | true
2 | false
3 | true
或 evt.target.value = null;
方法代替使用 this 和 applicationContext 。
2。
从创建时删除getActivity()
,因为您已经在getContext()
中正确地放大了视图。