【问题标题】:Get a list of TextFields that are available during runtime?获取运行时可用的 TextField 列表?
【发布时间】:2017-01-27 13:29:45
【问题描述】:

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

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

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

【问题讨论】:

    标签: android android-layout android-identifiers proteus


    【解决方案1】:

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

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

    布局:

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

    Java:

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

    返回的视图也可以是ProteusView

    更多信息请参考the wiki

    wiki 有点过时了,上面的答案是5.0.0-rc11 及以上版本。 wiki 应该很快就会更新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-16
      • 1970-01-01
      • 2020-06-11
      • 2021-12-29
      相关资源
      最近更新 更多