android - 关于 setContentView 的说明
问题描述
有什么区别:
setContentView(R.layout.activity_main);
TextView txtView = (TextView)findViewById(R.id.text);
和
TextView textView = new TextView(this);
setContentView(textView);
我找到了这两段代码。首先,setContentView
我向它传递了一个关于布局的信息。在第二种情况下,它有一个作为参数传递的视图。textView 也是一个 id。我认为不同之处在于,在第一种情况下,它是 XML 文件中描述的 activity_main 的布局(也包含 textView),而在第二种情况下,它是 textView 的 id。告诉我我是否正确。
还告诉我这里的“这个”指的是什么。为什么我们 findViewById
在第一种情况下使用?
解决方案
Activity.setContentView()
有2个签名。一种是以layout id为参数,另一种是以View为参数。实际上还有第三个将 View 和 ViewGroup.LayoutParam 作为输入。
这三种方法都采用他们得到的东西(一个视图或一个布局来膨胀)并将其设置为它们的根元素。简而言之:这里没有真正的区别。开发人员可以选择几个选项来告诉 Activity 其根 UI 元素
另请参阅:setContentView 说明
然后,该行在TextView txtView = (TextView)findViewById(R.id.text);
Activity 内容中搜索 ID 为“text”的 TextView(在这种情况下,R.layout.activity_main 中的每个视图)。
该行TextView textView = new TextView(this);
以编程方式创建一个新的 TextView 而不是膨胀布局 xml。该this
参数是一个上下文实例。创建视图总是需要一个上下文实例。一个活动是一个上下文。
推荐阅读
- laravel - 我使用 laravel-websockets 和错误无法读取未定义的属性 'socketId'
- bash - 在整个 bash 脚本中处理带有空格的变量/命令
- c - 为什么不同的编译器对相同的代码有不同的行为?
- ios - iOS 如何更快地从 PHAsset 导出视频?
- teensy - Teensy 作为串行设备
- python - keras lstm 的输出形状错误
- javascript - 可以在节点js中使用ajax将从客户端接收到的数据发送到php吗?
- reactjs - 如何在 create-react-app 中使用 Jest“项目”配置?
- python - 将 R 示例函数与 rpy2 一起使用时出现意外行为?
- algorithm - How to split range in groups?