【问题标题】:FindViewByID() Can't find my ID (2 activities)FindViewByID() 找不到我的 ID(2 个活动)
【发布时间】:2017-09-25 19:31:45
【问题描述】:

我是 Android 编程新手,但遇到了一个小问题。

所以我有 2 个活动和 2 个布局。

问题是我的第二个活动中有一个按钮,当我尝试声明它时 FindViewById() 无法从第二个布局中找到 id。我重新构建了应用程序并仔细检查了 ID - 它们匹配但只是函数 FindViewById() 找不到我的按钮的 ID。 例子: 我的第二个布局中有一个按钮(第二个活动?我不知道说什么是正确的,正如我所说的我是 android 编程新手) 按钮 ID 为 = LoginButton,当我进入第二个活动并输入 按钮 LoginButton FindViewByID(Resources.Id.LoginButton); 该函数找不到它:/ 我很混乱。请帮帮我

【问题讨论】:

  • 请出示您的代码。
  • 查看其他cmets,我贴了一些截图

标签: c# android xamarin xamarin.android xamarin-studio


【解决方案1】:

这是因为 Resource.Designer 无法成功创建,并且是因为您的 Layout 中有错误,所以请始终注意检查所有属性是否定义良好。

在 MenuList.axml 中:

  1. android:textColor="000" 更改为android:textColor="#000"(这很可能是问题所在)
  2. android:layout_height="210.5dp" 你真的需要那些 .5 dp 吗?我建议把它放到android:layout_height="210dp"
  3. 删除android:layout_marginBottom="0.0dp" 边距无论如何都是0dp。

完成此更改后,清理并重建项目并查看错误是否消失。

要跟踪此类错误,请将您的 Build 置于诊断状态,以便您可以 看看是什么造成了问题。

【讨论】:

    【解决方案2】:

    您是否在第二个活动的 XML 文件中声明了该按钮?如果您只在第一个活动中声明了它,那么 findviewbyid 将不会显示错误,因为存在具有该 ID 的元素。但它不会运行(将引发错误),因为它无法在您的(第二个)活动中找到该特定元素。

    【讨论】:

    • 是的,我已经声明了所有内容。问题是函数 FindViewById() 没有从我的第二个活动中找到 id。
    • 这可能意味着资源文件(R 文件)未在该活动中加载。或者它甚至可能是一个错字。尝试重建您的项目?
    • 是的,我试过了......一切都在完美加载,但 func FindViewById() 没有从第二个布局中找到 id
    • 您能否将代码添加到问题中。只是为了让我们其他人可以验证。另请详细说明“该功能不起作用”的含义。有任何错误或异常吗?
    【解决方案3】:
    1. 检查按钮的 ID 是否命名为“@+id/LoginButton”

    2. 正确的拼写应该是findViewById(R.id.LoginButton),而不是您输入问题的方式。

    3. 或者您是否试图从片段中获取视图? 试试 getView().findViewById(...);

    4. 如果这不起作用,请给我们一些代码,听起来像是某个地方的错字。

    【讨论】:

    • 是的,它被命名为 LoginButton,我已经声明了所有内容。只是函数 FindViewById() 没有从我的第二个活动中找到 ID。
    • 老兄,这不是拼写问题,一切正常。问题是,在我的第二个布局上,我有一个 ID 为 LoginButon 的按钮,当我转到第二个 activity.cs 并尝试声明该按钮时,函数 findviewbyid 只是找不到 ID。我尝试了重新构建,但它仍然无法正常工作。另一方面,如果我在我的第一个活动中执行此操作,则一切正常,我认为该函数只是从第一个布局而不是从第二个布局中搜索 id。以下是部分截图:gyazo.com/62b3ed7d199ff0e6242069a8526599f3gyazo.com/bad69ceedcdc6e285921ba2119946e79
    • 尝试重命名按钮并重建。重命名 MenuList 并重建。 Xamarin 有时非常糟糕。创建一个新项目并将代码粘贴到那里。或者停止使用 Xamarin,我认为你的代码是正确的。但我不明白为什么你有两个登录按钮。他们有相同的ID吗?通常只有一个带有 login_btn 的登录布局。我只是不明白逻辑。即使您有两种不同的布局,也不能为两个按钮分配相同的 id-name。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 2015-10-16
    • 1970-01-01
    相关资源
    最近更新 更多