【问题标题】:Log.d problems in kotlin (Android Studio)kotlin 中的 Log.d 问题(Android Studio)
【发布时间】:2021-02-19 18:54:20
【问题描述】:

所以我尝试使用 kotlin 语言创建飞扬的小鸟游戏,但我遇到了 log.d 命令的问题。这是我的 MainActivity.kt 代码:

package com.example.flappybird

import android.os.Bundle
import android.util.Log
import android.widget.ImageButton
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
    private val Tag = "MainActivity"

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val ImageButton: ImageButton = findViewById(R.id.btnPlay)
        ImageButton.setOnClickListener(
            Log.d(Tag)
        )
    }
}

在 Log.d(Tag) 行下,我收到此错误:

None of the following functions can be called with the arguments supplied.
d(String?, String) defined in android.util.Log
d(String?, String?, Throwable?) defined in android.util.Log 

现在,这是我的 PlayThread.kt 代码,它是一个类:

package Thread

    import Model.BackgroundImage
    import android.content.res.Resources
    import android.graphics.Canvas
    import android.util.Log
    import android.view.SurfaceHolder
    
    
    class PlayThread : Thread {
    
        private val TAG : String = "PlayThread"
        private var holder : SurfaceHolder
        private var resources : Resources
        private var isRunning : Boolean = false  //flag run or stop
        private val FPS : Int = (1000.0/60.0).toInt()  //time per frame for 60 fps
        private val backgroundImage = BackgroundImage() //object model
        private var startTime : Long = 0
        private var frameTime : Long = 0
    
    
    
        constructor(holder: SurfaceHolder, resources: Resources) {
            this.holder = holder
            this.resources = resources
            isRunning = true
        }
    
        override fun run() {
            Log.d(TAG, msg: "Thread Started")
            while(isRunning) {
                if (holder == null) return
                startTime = System.nanoTime()
                val canvas = holder.lockCanvas()
                if (!canvas) {
                    try{
                        synchronized(holder) {
                            render(canvas)
                        }
    
                    }
                finally {
                    holder.unlockCanvasAndPost(canvas)
    
                }
                }
                }
    
            }

我在 Log.d(TAG, msg: "Thread Started") 行收到此错误:

Unexpected tokens (use ';' to separate expressions on the same line)

我不知道如何解决这些问题,所以任何帮助将不胜感激!

【问题讨论】:

  • Log.d(TAG, "msg: Thread Started")
  • 没有任何版本的 d 函数只接受 tag。您还必须有一条消息。如果要给参数打标签,正确的语法是msg =而不是msg:

标签: android android-studio kotlin


【解决方案1】:

你应该使用:

Log.d(TAG, msg = "Thread Started") 而不是:

Log.d(TAG, msg: "Thread Started")

【讨论】:

  • 方法中的命名参数是消息而不是消息。
  • 命名参数是tagmsgtr如果有异常记录。
【解决方案2】:

替换

Log.d(Tag)

Log.d(Tag, " Some log message")

这个

Log.d(TAG, msg: "Thread Started")

Log.d(TAG, "msg: Thread Started")
//Or
Log.d(TAG, msg="Thread Started")

【讨论】:

    【解决方案3】:
     public static final String TAG=" Activity";
    
    
      val ImageButton:ImageButton = ImageButton(context)
            ImageButton.setOnClickListener{
                Log.d(TAG,"Hello World")
            }
    

    这将使您使用 Android 不可用的方法工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      • 2018-03-21
      • 1970-01-01
      • 2021-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多