4

我正在使用一个名为Proteus的 android 库,它在运行时使用我们位于服务器上的 JSON 文件来扩展布局。这个库允许数据绑定,但我的问题是如何在使用我的应用程序时从这些字段中获取数据?我无法引用布局的任何标识符,因为它们在编译期间不存在。当 (R.id.input) 直到运行时才实际存在时,有没有办法忽略语句中的错误?:

View view = inflater.infalte(R.layout.fragment_form, container, false);
TextView textView = (TextView)view.findViewById(R.id.input);

或者可能在运行时以编程方式获取所有可用唯一标识符的列表?任何信息都会有帮助。谢谢你。

4

1 回答 1

2

proteus在运行时生成视图 id,这与int在编译时为 Android XML 布局生成的 id 不同。与 Android 不同,proteus 创建的 Views 的 ID 是基于 的String,并且R.id.<something>不会起作用。

Proteus 提供了实用方法来通过它的Stringid 来查找视图。

布局:

{
  "type": "TextView",
  "id": "myId"
}

爪哇:

View view = proteusView.getViewManager().findViewById("myId"); // can be null

返回的视图也可以是ProteusView

请参阅维基了解更多信息。

wiki有点过时,上面的答案是5.0.0-rc11发布及以上。维基应该很快更新。

于 2017-02-20T13:50:27.767 回答