Android Studio:无效缓存/重启后对活动主的未解析引用
Posted
技术标签:
【中文标题】Android Studio:无效缓存/重启后对活动主的未解析引用【英文标题】:Android Studio: Unsolved reference to activity main after invalidate cache / restart 【发布时间】:2020-05-15 13:09:08 【问题描述】:我是编程新手,想参与其中。我开始学习 Kotlin,并创建了一个简单的掷骰子应用程序,在其中添加了我所学的新功能。但是,我正在关注一个教程,并且该人按下了 File> Invalidade Caches/restart 然后我跟着,之后没有任何效果了,我完全被难住了。我的 Mainactivity 中的所有引用都未解决,我无法让它工作。
我的 build.gradle 包含 应用插件:'kotlin-android-extensions'
我的 build.gradle 项目包含
依赖
类路径'com.android.tools.build:gradle:3.5.3'
类路径“org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version”
这就是我的研究让我得到的,但现在我被困住了。 :(
这是我的代码:
package com.example.diceroller
import android.R
import android.media.MediaPlayer
import android.os.Bundle
import android.text.method.ScrollingMovementMethod
import android.widget.Button
import android.widget.ImageView
import android.widget.TextView
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import java.util.*
class MainActivity : AppCompatActivity()
lateinit var mp: MediaPlayer
lateinit var diceImage: ImageView
var setDiceInt = 6
private var mediaPlayer: MediaPlayer? = null
override fun onCreate(savedInstanceState: Bundle?)
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val rollButton: Button = findViewById(R.id.roll_button)
val rollList: TextView = findViewById(R.id.roll_list)
val fourButton: Button = findViewById(R.id.d4)
val sixButton: Button = findViewById(R.id.d6)
val eightButton: Button = findViewById(R.id.d8)
val tenButton: Button = findViewById(R.id.d10)
val twelveButton: Button = findViewById(R.id.d12)
val twentyButton: Button = findViewById(R.id.d20)
rollList.movementMethod = ScrollingMovementMethod()
// mp = MediaPlayer.create(this, R.raw.) to be added later
fourButton.setOnClickListener
setDiceInt = 4
Toast.makeText(this, "$setDiceInt sided picked", Toast.LENGTH_SHORT).show()
sixButton.setOnClickListener
setDiceInt = 6
Toast.makeText(this,"$setDiceInt sided picked", Toast.LENGTH_SHORT).show()
eightButton.setOnClickListener
setDiceInt = 8
Toast.makeText(this,"$setDiceInt sided picked", Toast.LENGTH_SHORT).show()
tenButton.setOnClickListener
setDiceInt = 10
Toast.makeText(this,"$setDiceInt sided picked", Toast.LENGTH_SHORT).show()
twelveButton.setOnClickListener
setDiceInt = 12
Toast.makeText(this,"$setDiceInt sided picked", Toast.LENGTH_SHORT).show()
twentyButton.setOnClickListener
setDiceInt = 20
Toast.makeText(this,"$setDiceInt sided picked", Toast.LENGTH_SHORT).show()
rollList.text = ""
rollButton.text = "Lets roll!"
rollButton.setOnClickListener
rollDice()
diceImage = findViewById(R.id.result_image)
fun rollDice()
val resultText: TextView = findViewById(R.id.result_text)
val rollList: TextView = findViewById(R.id.roll_list)
val randomInt = Random().nextInt(setDiceInt) +1
val drawableResource = when (randomInt)
1 -> R.drawable.dice_1
2 -> R.drawable.dice_2
3 -> R.drawable.dice_3
4 -> R.drawable.dice_4
5 -> R.drawable.dice_5
else -> R.drawable.dice_6
val scream = if (randomInt != 1)
else
mp.start()
diceImage.setImageResource(drawableResource)
resultText.text = randomInt.toString()
rollList.append(setDiceInt.toString() + " sided dice hit: " + randomInt.toString() + "\n")
【问题讨论】:
尝试关闭并重新导入项目,而不是无效并重新启动。很多时候可以修复这些损坏的问题(不要只从Open Recent
打开它,转到File -> Open
和目录)。在类似情况下对我有用。
您可以尝试: 0- 备份整个项目 1- 无效缓存 2- 关闭项目 3- 关闭 Android Studio IDE 4- 删除 .idea 目录 5- 删除所有 .iml 文件 5- 运行Android Studio IDE 并重新打开项目
你能发布你遇到的错误吗?
不幸的是,这些建议都没有奏效。这是构建中的错误消息:```org.gradle.internal.exceptions.LocationAwareException:任务':app:compileDebugKotlin'的执行失败。在 org.gradle.initialization.exception.DefaultExceptionAnalyser.transform(DefaultExceptionAnalyser.java:99) ``` 等等。这是一个很长的错误。我还得到了 Redeclaration: MainActivity 和 Unresolved reference on all the buttons, textfields etc and activity_main.
【参考方案1】:
请尝试清理下面的缓存文件夹以重新下载库 -
c:\Users\<user>\.gradle\caches\
c:\Users\<user>\.AndroidStudio3.x\system\caches\
【讨论】:
以上是关于Android Studio:无效缓存/重启后对活动主的未解析引用的主要内容,如果未能解决你的问题,请参考以下文章
android studio - R未解决+ Clean项目无效
为什么Android Studio在编写代码时不再显示提示?
Android Studio choreographer.java
Android Studio 使用小技巧笔记 External Tools