【问题标题】:Android Studio - MainActivity.java can't see id attributesAndroid Studio - MainActivity.java 看不到 id 属性
【发布时间】:2018-12-30 07:48:03
【问题描述】:

我给了一个 id 属性: 安卓:id="@+id/animation_layout"
在activity_main.xml中的默认布局(编号为1)

但是当我尝试在 MainActivity.java 中通过它的 id 调用它时: ConstraintLayout constraintLayout = findViewById(R.id.animation_layout);

  • 找不到(编号为2)

我错过了什么?

还附上代码:

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/animation_layout"
android:background="@drawable/gradients_list"
tools:context=".MainActivity">

和 Java 代码:

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //Gradient animation

    ConstraintLayout constraintLayout = findViewById(R.id.animation_layout);
    AnimationDrawable  animationDrawable = (AnimationDrawable) constraintLayout.getBackground();
    animationDrawable.setEnterFadeDuration(2000);
    animationDrawable.setEnterFadeDuration(4000);
    animationDrawable.start();

感谢您的帮助:)

【问题讨论】:

  • 只需进入 android build 菜单并运行 clean 命令!它会解决问题!

标签: android android-layout android-studio listview


【解决方案1】:

它发生在新的 android 更新后的某个时间!您甚至在 xml 中提供了 id,但 android 的 java api 仍然没有获取它们!所以你需要做这一步!

1:清理构建会删除旧构建的缓存!这应该可以解决问题

2:如果这不会使您的 id 在 java 中读取,您可以使用同一菜单中的 Rebuild 选项!

3:如果这不起作用,您可以使用 FILE-> 使缓存无效并重新启动

【讨论】:

  • 有时只需再次同步 gradle 即可工作,但您的解决方案很好。
  • 是的,基本上如果你同步 gradle 它会自动运行 clean 命令!正如您在项目的 build.gradle 文件中看到的那样,为它定义了这个 Clean 函数! @Jsperk
  • @EliranLiriElgozi 投票!我很高兴它有帮助!
猜你喜欢
  • 1970-01-01
  • 2015-07-13
  • 1970-01-01
  • 2020-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-31
  • 1970-01-01
相关资源
最近更新 更多