伴随对象中的实例

时间:2018-06-16 16:08:07

标签: java android-activity callback singleton kotlin-companion

我无法继续访问     var mBleWrapper:BleWrapper? = null 在其他活动中。有一个名为BleWrapperUiCallbacks的预定义Java接口,我怀疑它包含我需要的功能和Java-Class BleWrapper。

我尝试了Kotlin伴侣Object,它取代了Java单例,但是我必须将初始化的BleWrapper设置为伴随对象,这实际上是不可能的,因为BleWrapper是如此实例化的:

class BLEActivity : AppCompatActivity() {

     companion object {
     var mBleWrapper: BleWrapper? = null
 //Do something to instantiate the BleWrapper and return the instantiated BleWrapper
 }
 override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.ble_layout)

    initializeBLEWrapper()

    val ble_on = findViewById<FloatingActionButton>(R.id.ble_on)
    ble_on.setOnClickListener {

        val intent = Intent(this, MainActivity::class.java)
        startActivity(intent)
        gatt = mBleWrapper?.getGatt()!!
        c = gatt.getService(NORDIC_UART).getCharacteristic(NORDIC_UART_TX)
        val testVal = "a"
        val bytes = testVal.toByteArray()
        mBleWrapper?.writeDataToCharacteristic(c, bytes)
    }
}

private fun initializeBLEWrapper() {
    mBleWrapper = BleWrapper(this, object : BleWrapperUiCallbacks.Null() {
        override fun uiDeviceFound(
                device: BluetoothDevice,
                rssi: Int,
                record: ByteArray) {              
            if (device.getName() != null) {
                if (device.getName().equals("Adafruit Bluefruit LE") == true) {
                    var status = mBleWrapper!!.connect(device.getAddress().toString())
                    if (status == false) {
                        Log.d("DEBUG", "uiDeviceFound: Connection problem!")
                    } else {
                        Log.d("DEBUG", "Connected")
                        ble_on.isClickable = true
                    }

                }
            }
        }
    }
}

这个“这个”指的是当前的活动。关于Singleton,Java的解决方法是什么?!没有这个实例化,BleWrapper当然总是为null。 在孔时间内连接到ble设备。这是logcat:     BluetoothGatt:readRssi() 我需要调用的服务也显示在logcat中......

有人能帮助我吗?我有点绝望。 我也找到了这个:Passing an object instance between two activities in Kotlin

0 个答案:

没有答案