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

Android Studio 使用小技巧笔记 External Tools

Android Studio 使用小技巧笔记 External Tools