我试图在onCreate方法中获取视图的高度,但我找不到任何方法来删除OnGlobalLayoutListener.
在Java(工作):
containerLayout.getViewTreeObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
containerLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
int width = layout.getMeasuredWidth();
int height = layout.getMeasuredHeight();
}
});
Run Code Online (Sandbox Code Playgroud)
在Kotlin(不接受"这个"):
containerLayout.viewTreeObserver.addOnGlobalLayoutListener {
containerLayout.viewTreeObserver.removeOnGlobalLayoutListener(this)
Toast.makeText(applicationContext, "size is "+ containerLayout.height,Toast.LENGTH_LONG).show()
}
Run Code Online (Sandbox Code Playgroud)
这个问题有没有参考或例子?谢谢.
为什么Kotlin抱怨这个:
class MyActivity : Activity {
private var handler:Handler = Handler()
private var runnable: Runnable = Runnable {
/* Do something very important */
handler.postDelayed(this@MyActivity.runnable, 5000)
}
}
Run Code Online (Sandbox Code Playgroud)
编译器抱怨说Variable 'runnable' must be initialized,在Line中它是由处理程序再次发布的.这在纯Java中有效:
private Handler handler = new Handler();
private Runnable runnable = new Runnable() {
@Override
public void run() {
handler.postDelayed(runnable, 5000);
}
};
Run Code Online (Sandbox Code Playgroud) 我在监视某个文件的java中有这样的代码:
private Handler mHandler = new Handler();
private final Runnable monitor = new Runnable() {
public void run() {
// Do my stuff
mHandler.postDelayed(monitor, 1000); // 1 second
}
};
Run Code Online (Sandbox Code Playgroud)
这是我的kotlin代码:
private val mHandler = Handler()
val monitor: Runnable = Runnable {
// do my stuff
mHandler.postDelayed(whatToDoHere, 1000) // 1 second
}
Run Code Online (Sandbox Code Playgroud)
我不明白Runnable我应该传递什么mHandler.postDelayed.什么是正确的解决方案?另一件有趣的事情是,当我提供这段代码时,kotlin到java转换器会冻结.
val cycleRunnable = Runnable {
handler.postDelayed(cycleRunnable,100)
}
Run Code Online (Sandbox Code Playgroud)
我收到错误错误:(219,29)类型检查遇到了递归问题.最简单的解决方法:明确指定声明的类型
但它的确切java版本没有任何错误
private final Runnable cycleRunnable = new Runnable() {
public void run() {
handler.postDelayed(cycleRunnable, POST_DELAY);
}
};
Run Code Online (Sandbox Code Playgroud) 我有下面的代码.这是Kotlin.知道为什么textToSpeech来自于textToSpeech.setLanguage(Locale.UK)告诉没有参考解决textToSpeech?
val textToSpeech = TextToSpeech(
applicationContext,
object : TextToSpeech.OnInitListener {
override fun onInit(status: Int) {
if (status == TextToSpeech.SUCCESS) {
textToSpeech.setLanguage(Locale.UK)
}
}
})
Run Code Online (Sandbox Code Playgroud)
起初我认为它是一个Idea kotlin插件bug,但似乎它实际上无法编译