有没有办法在Kotlin和Android中捆绑函数引用,以便可以从其他片段调用函数?例如,我的片段工厂方法如下所示:
fun newInstance(tryAgainFunction: () -> Unit): TimeOutHandlerFragment {
val fragment = TimeOutHandlerFragment()
val bundle = Bundle()
return fragment
}
Run Code Online (Sandbox Code Playgroud)
我希望能够将我的tryAgainFunction保存在bundle中以便进一步检索.
非常感谢!
编辑
最后,最合适的解决方案是使用热键的答案,然后在onViewCreated中使用传递的函数初始化一个侦听器.完整的代码如下:
companion object {
val CALLBACK_FUNCTION: String = "CALLBACK_FUNCTION"
fun newInstance(tryAgainFunction: () -> Unit): TimeOutHandlerFragment {
val fragment = TimeOutHandlerFragment()
val bundle = Bundle()
bundle.putSerializable(CALLBACK_FUNCTION, tryAgainFunction as Serializable)
fragment.arguments = bundle
return fragment
}
}
override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
try {
val callback: () -> Unit = arguments.getSerializable(CALLBACK_FUNCTION) as () -> Unit
btnTryAgain.setOnClickListener …
Run Code Online (Sandbox Code Playgroud) 我使用Matlab的相机校准工具箱校准了我的GoPro Hero 4 Black ,并使用OpenCV的calibrationMatrixValues()计算了它的视野和焦距.但是,这些与GoPro的规格不同.相当于118.2/69.5 FOV,我得到95.4/63.4,焦距2.8mm而不是17.2mm.显然有些不对劲.
我认为校准本身是正确的,因为图像失真似乎运作良好.
任何人都可以给我一个暗示我犯了错误的提示吗?我在下面发布我的代码.
谢谢.
cameraMatrix = new Mat(3, 3, 6);
for (int i = 0; i < cameraMatrix.height(); i ++)
for (int j = 0; j < cameraMatrix.width(); j ++) {
cameraMatrix.put(i, j, 0);
}
cameraMatrix.put(0, 0, 582.18394);
cameraMatrix.put(0, 2, 663.50655);
cameraMatrix.put(1, 1, 582.52915);
cameraMatrix.put(1, 2, 378.74541);
cameraMatrix.put(2, 2, 1.);
org.opencv.core.Size size = new org.opencv.core.Size(1280, 720);
//output parameters
double [] fovx = new double[1];
double [] fovy = …
Run Code Online (Sandbox Code Playgroud)