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

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

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

最佳答案

proteus在运行时生成视图id,这与在编译时为android xml布局生成的intid不同。与android不同,proteus创建的视图的id基于String,而R.id.<something>将不起作用。
proteus提供了通过其Stringid来查找视图的实用方法。
布局:

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

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

返回的视图也可以是ProteusView
请参阅the wiki了解更多信息。
wiki有点过时了,上面的答案是5.0.0-rc11和更高版本。wiki应该很快就会更新。

07-25 21:27