java - Android ID资源可以转发吗?

标签 java android build gradle android-xml

id 资源可以引用文件后面的元素吗?

这里我有两个字段,一个是用户名,另一个是密码。我为密码字段创建了一个新的 ID 资源(使用 @+id/ 语法),但是用户名字段在 android:nextFocusDown 字段中找不到它。我从布局 xml 中省略了其他字段,因为它们不相关。

在这种情况下,我需要如何声明 ID?

<EditText
    android:id="@+id/login_username"
    android:nextFocusDown="@id/login_password" />

<EditText
    android:id="@+id/login_password"
    android:nextFocusUp="@id/login_username"
    android:nextFocusDown="@id/login_submit" />

使用 gradle 构建时,我收到如下所示的错误:Error:(41, 32) No resource found that matches the given name (at 'nextFocusDown' with value '@id/login_password') .

我没有收到 android:nextFocusUp="@id/login_username" 字段的错误,这让我相信您必须在使用它之前声明它。

我的代码中也出现编译错误,因为没有生成 R.java 文件,很可能是因为它构建的资源也没有构建。

对于 android 中所有精美的构建工具,我很惊讶这是一个问题。这是已知问题还是期望的行为?

最佳答案

您可以在第一个值中指定一个@+id

<EditText
    android:id="@+id/login_username"
    android:nextFocusDown="@+id/login_password" />
<EditText
    android:id="@+id/login_password"
    android:nextFocusUp="@id/login_username"
    android:nextFocusDown="@id/login_submit" />

拥有多个@+id 并没有什么坏处。它可能会使检测拼写错误变得更加困难,但如果您需要它,它会很好用。

关于java - Android ID资源可以转发吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26667915/

相关文章:

java - 拦截传入的 JMS 消息到 ActiveMQ,根据规则拒绝/批准

java - Android SQLite 数据库空指针

Android 应用内购买消费品

com - VB6编译时可以使用.local文件避免注册COM ocx和dll文件吗

c - 生成错误 : multiple definition of

java - 如何在 Java 中实现正确的异常处理?

java - lambda foreach parallelStream 创建的数据少于预期

android - HTC 设备上的联系人应用程序设置中未显示帐户

php - 构建一个按钮,显示它在 WORDPRESS 中被点击的次数

java - 小程序 "pong"游戏 : ball goes right through paddle if paddle is moving towards the ball