android - 如何修复 Kotlin Android Studio 3.3 中的 "Unresolved reference "错误

标签 android kotlin android-studio-3.0

我是 kotlin 和 Andriod 工作室的新手。我正在遵循教程,一切都很顺利,直到我收到大量“ Unresolved reference 错误”

我查看了其他人关于这个问题的帖子,但似乎没有任何帮助,因为我仍然收到多个错误

我尝试过:

  • 构建 -> 清理 -> 构建 -> 重建。
  • 文件 -> 使缓存无效并重新启动
  • 删除 .idea/libraries -> 文件 -> 将项目与 Gradle 文件同步。

这是我的版本信息

Android Studio 3.3.1 Build #AI-182.5107.16.33.5264788,构建于 2019 年 1 月 28 日 JRE:1.8.0_152-release-1248-b01 amd64 JVM:OpenJDK 64 位服务器 VM,由 JetBrains s.r.o 提供Windows 10 10.0

我的代码

package e.lakal.tapfighter

import android.content.ContentValues.TAG
import android.os.Bundle
import android.os.CountDownTimer
import android.os.PersistableBundle
import android.support.design.widget.Snackbar
import android.support.v7.app.AppCompatActivity
import android.util.Log
import android.view.Menu
import android.view.MenuItem
import android.widget.Button
import android.widget.TextView
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

internal lateinit var  tapmeButton: Button;
internal lateinit var GameScore: TextView;
internal lateinit var  Timer: TextView;
internal var  Score = 0
internal  var gameStarted = false

internal lateinit var countDownTimer : CountDownTimer
internal  val  initalCountDown: Long = 60000;
internal  val  CountDownInterval: Long = 1000;
internal val TAG = MainActivity::class.java.simpleName
internal val timeLeftonTimer : Long = 6000


companion object {
  private val SCORE_KEY ="SCORE_KEY"
  private val TIME_LEFT_KEY = "TIME_LEFT_KEY"
   }

override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    Log.d(TAG, "On create called. Score is $Score")
    setSupportActionBar(toolbar)

    fab.setOnClickListener { view ->
        Snackbar.make(view, "Replace with your own action", 
      Snackbar.LENGTH_LONG)
            .setAction("Action", null).show()
    }

    tapmeButton = findViewById<Button>(R.id.tapmeButton)
    GameScore = findViewById<TextView>(R.id.GameScore)
    Timer = findViewById<TextView>(R.id.Timer)
    GameScore.text = getString(R.string.YourScore, Score.toString())

  tapmeButton.setOnClickListener{  view ->
      incrementScore()
   }
    resetGame()
     }




private fun resetGame(){

    Score = 0
    GameScore.text = getString(R.string.YourScore, Score.toString())
    val initalTimeLeft = initalCountDown / 1000
    Timer.text = getString(R.string.TimeLeft, 
      initalTimeLeft.toString())

    countDownTimer =  object: CountDownTimer(initalCountDown, 
     CountDownInterval) {
        override fun onTick(millisUntilFinished: Long) {
           val  timeLeft = millisUntilFinished / 1000
            Timer.text = getString(R.string.TimeLeft, 
    timeLeft.toString())
        }

        override fun onFinish() {
         endGame()
        }
    }
 gameStarted =false;
}


  // Starts giving me problems here

}
 private fun startGame(){
    countDownTimer.start()
    gameStarted
 }


  override fun onSaveInstanceState(outState: Bundle?, 
  outPersistentState: PersistableBundle?) {
    super.onSaveInstanceState(outState, outPersistentState)

    outState?.putInt(SCORE_KEY, Score)
    outState?.putLong(TIME_LEFT_KEY, timeLeftonTimer)
    countDownTimer.cancel()

    Log.d(TAG,"onSaveInstanceState : Saving score : $Score & Saving 
 Time  current $timeLeftonTimer")

}
  override fun onDestroy(){
    super.onDestroy()
     Log.d(TAG, "onDestroy called.")
 }


private fun endGame(){
    Toast.makeText(this, getString(R.string.game_over_msg, Score.toString()), Toast.LENGTH_SHORT).show()
    resetGame()

}
private fun incrementScore() {
        if(!gameStarted){
            startGame() }
    Score++
    val newScore = getString(R.string.YourScore, Score.toString())
    GameScore.text = newScore
}



override fun onCreateOptionsMenu(menu: Menu): Boolean {

    menuInflater.inflate(R.menu.menu_main, menu)
    return true
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {

    return when (item.itemId) {
        R.id.action_settings -> true
        else -> super.onOptionsItemSelected(item)
    }
}
}

日志猫

019-02-24 17:49:13.359 2003-6170/? E/WakeLock: GCM_HB_ALARM release 
without a matched acquire!2019-02-24 17:49:13.450 1641-1769/? 
I/WifiService: getConnectionInfo uid=10013
2019-02-24 17:49:58.235 1641-1769/? D/WificondControl: Scan result 
 ready event
 2019-02-24 17:50:00.008 1641-1654/? E/memtrack: Couldn't load 
 memtrack module
 2019-02-24 17:50:00.008 1641-1654/? W/android.os.Debug: failed to 
 get memory consumption info: -1
 2019-02-24 17:50:00.016 1436-1454/? D/hwcomposer: hw_composer sent 
  6 syncs in 60s
 2019-02-24 17:50:00.111 1443-1443/? I/boot-pipe: done populating 
 /dev/random
 2019-02-24 17:50:15.532 1641-1658/? E/BatteryExternalStatsWorker: 
 modem info is invalid: ModemActivityInfo{ mTimestamp=0 
 mSleepTimeMs=0 mIdleTimeMs=0 mTxTimeMs[]=[0, 0, 0, 0, 0] 
  mRxTimeMs=0 mEnergyUsed=0}

最佳答案

在“//Starts Give me issues Here”下方,方法的范围是文件的根目录,而不是类内部。

所以,我重新格式化您的代码,我可以检查“ Unresolved 引用错误”是否消失,排除工具栏、fab 和 R。**

尝试一下并通知我结果。

package e.lakal.tapfighter

import android.content.ContentValues
import android.content.ContentValues.TAG
import android.os.Bundle
import android.os.CountDownTimer
import android.os.PersistableBundle
import android.util.Log
import android.view.Menu
import android.view.MenuItem
import android.widget.Button
import android.widget.TextView
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.appg.saltfactory.R
import com.google.android.material.snackbar.Snackbar

class MainActivity : AppCompatActivity() {

    internal lateinit var tapmeButton: Button;
    internal lateinit var GameScore: TextView;
    internal lateinit var Timer: TextView;
    internal var Score = 0
    internal var gameStarted = false

    internal lateinit var countDownTimer: CountDownTimer
    internal val initalCountDown: Long = 60000;
    internal val CountDownInterval: Long = 1000;
    internal val TAG = MainActivity::class.java.simpleName
    internal val timeLeftonTimer: Long = 6000


    companion object {
        private val SCORE_KEY = "SCORE_KEY"
        private val TIME_LEFT_KEY = "TIME_LEFT_KEY"
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.main_activity)
        Log.d(TAG, "On create called. Score is $Score")
        setSupportActionBar(toolbar)

        fab.setOnClickListener { view ->
            Snackbar.make(
                view, "Replace with your own action",
                Snackbar.LENGTH_LONG
            )
                .setAction("Action", null).show()
        }

        tapmeButton = findViewById<Button>(R.id.tapmeButton)
        GameScore = findViewById<TextView>(R.id.GameScore)
        Timer = findViewById<TextView>(R.id.Timer)
        GameScore.text = getString(R.string.YourScore, Score.toString())

        tapmeButton.setOnClickListener { view ->
            incrementScore()
        }
        resetGame()
    }


    private fun resetGame() {

        Score = 0
        GameScore.text = getString(R.string.YourScore, Score.toString())
        val initalTimeLeft = initalCountDown / 1000
        Timer.text = getString(
            R.string.TimeLeft,
            initalTimeLeft.toString()
        )

        countDownTimer = object : CountDownTimer(
            initalCountDown,
            CountDownInterval
        ) {
            override fun onTick(millisUntilFinished: Long) {
                val timeLeft = millisUntilFinished / 1000
                Timer.text = getString(
                    R.string.TimeLeft,
                    timeLeft.toString()
                )
            }

            override fun onFinish() {
                endGame()
            }
        }
        gameStarted = false;
    }


    // Starts giving me problems here
    private fun startGame() {
        countDownTimer.start()
        gameStarted
    }


    override fun onSaveInstanceState(
        outState: Bundle?,
        outPersistentState: PersistableBundle?
    ) {
        super.onSaveInstanceState(outState, outPersistentState)

        outState?.putInt(SCORE_KEY, Score)
        outState?.putLong(TIME_LEFT_KEY, timeLeftonTimer)
        countDownTimer.cancel()

        Log.d(
            ContentValues.TAG, "onSaveInstanceState : Saving score : $Score & Saving Time current $timeLeftonTimer")
    }

    override fun onDestroy() {
        super.onDestroy()
        Log.d(ContentValues.TAG, "onDestroy called.")
    }


    private fun endGame() {
        Toast.makeText(this, getString(R.string.game_over_msg, Score.toString()), Toast.LENGTH_SHORT).show()
        resetGame()

    }

    private fun incrementScore() {
        if (!gameStarted) {
            startGame()
        }
        Score++
        val newScore = getString(R.string.YourScore, Score.toString())
        GameScore.text = newScore
    }


    override fun onCreateOptionsMenu(menu: Menu): Boolean {

        menuInflater.inflate(R.menu.menu_main, menu)
        return true
    }

    override fun onOptionsItemSelected(item: MenuItem): Boolean {

        return when (item.itemId) {
            R.id.action_settings -> true
            else -> super.onOptionsItemSelected(item)
        }
    }
}

关于android - 如何修复 Kotlin Android Studio 3.3 中的 "Unresolved reference "错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54857446/

相关文章:

java - 如何将来自 SAX 解析器的 XML 数据存储在 java 对象中?

kotlin - 默认情况下,对讲不关注内部片段开始时的任何 View

android - 将字符串值从另一个 java 类获取到 textview

android - 如何创建 Android Market 链接以列出开发人员的所有应用程序?

java - 异步调用集合中的每个项目

android - 错误 : Ambiguous method call. AppCompactActivity 和 Activity 中的 findViewById (int)

android - 构建 apk 失败,错误为 : package android. arch.core.util 不存在

android - 错误 : package com. google.android.gms.tagmanager 不存在

android - 创建带警报的重复服务

java - 如何使用 gson.fromJson() 强制 Kotlin 调用我的类初始值设定项?