相关疑难解决方法(0)

如何从里面引用lambda?

我试图在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)

这个问题有没有参考或例子?谢谢.

android kotlin

18
推荐指数
2
解决办法
2942
查看次数

必须初始化变量'runnable'

为什么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 android kotlin

16
推荐指数
1
解决办法
3604
查看次数

无限期地将Runnable从java转换为kotlin

我在监视某个文件的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转换器会冻结.

java android kotlin

13
推荐指数
2
解决办法
1万
查看次数

类型检查已经在kotlin中进行了递归

 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)

android kotlin

13
推荐指数
3
解决办法
4473
查看次数

匿名Kotlin监听器内未解决的引用

我有下面的代码.这是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,但似乎它实际上无法编译

android text-to-speech kotlin

6
推荐指数
1
解决办法
1068
查看次数

标签 统计

android ×5

kotlin ×5

java ×2

text-to-speech ×1