没有xml的Android视图
Posted
技术标签:
【中文标题】没有xml的Android视图【英文标题】:Android view without xml 【发布时间】:2010-11-27 03:13:58 【问题描述】:我需要创建没有 XML 的视图。我通过视图的getID
方法检索视图ID,但我得到了ResourceNotFoundException
。我尝试使用setID
方法修复此ID,但它不再起作用了。
【问题讨论】:
请详细点,贴一些代码,解释一下你在说什么id... 完全同意,让我们看看一些代码,然后我们可以提供帮助。 【参考方案1】:如果你没有声明你的视图并在布局 XML 文件中放置 id,你不能用它来检索它
findViewById(int)
如果您在没有 XML 的情况下创建视图,则应该在没有资源 ID 的情况下对其进行管理。您只需创建视图并为其命名,然后使用该名称对其进行操作。
您始终可以将它的引用传递给其他类,或者通过创建它的类使其可访问。
您仍然不想在 XML 中声明它吗?通常,当您开始一个项目时,您看不到如何使用 XML 布局做某事,并选择以编程方式创建大多数视图。在您推进项目或积累更多经验后,几乎在所有情况下,您都会发现您可以使用 XML 完成。
【讨论】:
不幸的是,我不能使用 XML 布局...实现原因...我的问题是我想使用一个 ListView 填充了一个 ArrayAdapater ant ArrayAdapter 构造函数需要一个视图 ID!跨度> 好吧,在这种情况下,使用 View 类的 setId(int) 方法。 这就是我所做的,但我在运行时得到了 ResourceNotFoundException 看看这里:groups.google.com/group/android-developers/browse_thread/thread/…【参考方案2】:我认为问题如下。
当您调用findViewById()
时,它会在显示树中搜索该视图。因此,要从树中获取视图,您应该已经使用函数 addView() 将视图添加到树中。如果您还没有这样做,它可能无法在树中找到视图。
【讨论】:
【参考方案3】:这很容易。
lv = new ListView(this); lv.setId(android.R.layout.simple_list_item_1);
SimpleCursorAdapter ca = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, c, from, to);
【讨论】:
【参考方案4】:如果您尝试打印视图的getId(int)
,您是否获得了有效的 ID?
尝试在正确的上下文中使用findViewById(int)
,例如yourContext.findViewById(int);
【讨论】:
是的,我获得了我在 setID 方法中指定的 id,但是 findViewByID 返回异常(ResourceNotFound) 尝试使用 yourActivity.findViewById(int);或 yourActivity.getBaseContext().findViewById 来查找视图。如果这不起作用,我认为您必须在某处引用创建的视图,以便您立即获得手头的视图以上是关于没有xml的Android视图的主要内容,如果未能解决你的问题,请参考以下文章
eclipse 中打开android的xml文件为啥没有视图显示
从 XML 膨胀自定义视图会创建 Illegalstateexception(Android, Java)