获取运行时可用的TextField列表?

时间:2017-01-27 13:29:46

标签: android android-layout android-identifiers proteus

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

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

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

1 个答案:

答案 0 :(得分:2)

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

Proteus提供了实用程序方法来查找String id的视图。

布局:

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

爪哇:

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

返回的视图也可以是ProteusView

有关详细信息,请参阅the wiki

  

维基略有过时,上面的答案是针对5.0.0-rc11及更高版本。维基应尽快更新。