setContentView是做什么的?

时间:2019-02-10 19:26:08

标签: android android-layout android-activity

我是android的新手,正在尝试学习尽可能多的东西。我注意到布局xml文件中有这一行

      $http.post("http://localhost:8080/yourresource", parameter, {headers: 
      {'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*' } }).

活动有这一行

          $http({   method: 'POST', url: "http://localhost:8080/yourresource", 
                    parameter, 
                    headers: {'Content-Type': 'application/json', 
                              'Access-Control-Allow-Origin': '*',
                              'Access-Control-Allow-Methods': 'POST'} 
                })

显然,这些文件以某种方式将两个文件链接在一起,但是它们究竟是做什么的呢?

如果我切换到Main2Activity,是否会自动显示布局?

如果我更改布局,它是否会切换到我的活动,还是我仍然需要手动更改活动?

1 个答案:

答案 0 :(得分:2)

在这里必须澄清一件事。

的确,setContentView(R.layout.acivity_main2);会将布局文件链接到您的活动。但是,tools:context=".Main2Activity" 不会以您认为的方式将“活动”链接到布局文件。

首先,您需要注意该行中的单词toolstoolstools命名空间通常使用的名称,它提供了一些仅在设计时有效的xml属性。看一下这份文档:https://developer.android.com/studio/write/tool-attributes

请注意,在构建应用程序时,与tools相关的所有内容都会被删除。因此,tools:context=".Main2Activity"在将“活动”链接到布局时起零作用。

相反,它只允许在设计过程中进行链接,方法是允许您预览在模拟tools:context=中设置的活动的容器中进行布局。因此,如果您对该活动具有特定的主题,则“预览”将在“预览”窗口中反映该主题。

另一方面,setContentView(R.layout.activity_main2);在将xml布局链接到“活动”时确实起到了主要的作用。

该语句告诉Activity 充气该xml布局并获取所有视图和更多内容。本质上,通过使用setContentView(R.layout.activity_main2);告诉Activity想要使用该布局文件,因此请使用该文件作为准则来创建布局。

调用setContentView(R.layout.activity_main2);后,您的“活动”将知道您要使用哪种布局,因此可以通过findViewById()之类的方法找到要使用的视图。如果您从未使用过setContentView(),这将是不可能的。

因此,请回答您的最后两个问题:

  1. 在布局xml文件中将Main2Activity切换到另一个Activity不会做任何事情,除了向您展示如果将其放置在另一个Activity内,其外观将如何。它根本不会改变您的应用程序的结果。全部用于设计目的。

  2. setContentView()中切换到另一个布局文件将完全更改活动中使用的布局。请谨慎行事,因为如果您的代码仅用于原始布局中的视图,则如果该代码针对第二个布局运行,这将导致崩溃,因为这些视图不再存在。

底线是:

  • tools:context=".Main2Activity"-连接活动和布局是不必要的。

  • setContentView(R.layout.acivity_main2);-这是连接“活动”和布局的必要条件。