重要的文件
app > java > com.example.myfirstapp > MainActivity
这是主 activity。它是应用的入口点。当您构建和运行应用时,系统会启动此 Activity
的实例并加载其布局。
app > res > layout > activity_main.xml
此 XML 文件定义了 activity 界面 (UI) 的布局。它包含一个 TextView
元素,其中具有“Hello, World!”文本
app > manifests > AndroidManifest.xml
清单文件描述了应用的基本特性并定义了每个应用组件。
Gradle Scripts > build.gradle
有两个使用此名称的文件:一个针对项目“Project: My First App”,另一个针对应用模块“Module: My_First_App.app”。每个模块均有自己的 build.gradle
文件,但此项目当前仅有一个模块。使用每个模块的 build.gradle
文件控制 Gradle 插件构建应用的方式。如需详细了解此文件,请参阅配置 build。
构建简单的界面
Android 应用的界面 (UI) 以布局和微件的层次结构形式构建而成。布局是 ViewGroup
对象,即控制其子视图在屏幕上的放置方式的容器。微件是 View
对象,即按钮和文本框等界面组件。

ConstraintLayout
是一种布局,它根据同级视图和父布局的约束条件定义每个视图的位置。这样一来,使用扁平视图层次结构既可以创建简单布局,又可以创建复杂布局。这种布局无需嵌套布局。嵌套布局是布局内的布局(如上图所示),会增加绘制界面所需的时间。
Intent
Intent
是在相互独立的组件(如两个 activity)之间提供运行时绑定功能的对象。Intent
表示应用执行某项操作的意图。您可以使用 intent 执行多种任务,但在本课中,您的 intent 将用于启动另一个 activity。
在 MainActivity
中,添加 EXTRA_MESSAGE
常量和 sendMessage()
代码,如下所示:
const val EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE" class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } /** Called when the user taps the Send button */ fun sendMessage(view: View) { val editText = findViewById<EditText>(R.id.editTextTextPersonName) val message = editText.text.toString() val intent = Intent(this, DisplayMessageActivity::class.java).apply { putExtra(EXTRA_MESSAGE, message) } startActivity(intent) } }
sendMessage()
将发生以下情况:
Intent
构造函数会获取两个参数:Context
和Class
。首先使用Context
参数,因为Activity
类是Context
的子类。在本例中,系统将Intent,
传递到的应用组件的Class
参数是要启动的 activity。putExtra()
方法将EditText
的值添加到 intent。Intent
能够以称为“extra”的键值对形式携带数据类型。您的键是一个公共常量EXTRA_MESSAGE
,因为下一个 activity 将使用该键检索文本值。为 intent extra 定义键时,最好使用应用的软件包名称作为前缀。这样可以确保这些键是独一无二的,这在您的应用需要与其他应用进行交互时会很重要。startActivity()
方法将启动一个由Intent
指定的DisplayMessageActivity
实例。接下来,您需要创建该类。
关于apply,kotin中类的构造函数返回的对象有几个内置函数,其列表和作用如下:

也就是说,putExtra是intent对象的一个成员函数,apply是kotlin提供的一个语法糖。
创建第二个 activity
在此步骤中,您将修改第二个 activity 以显示第一个 activity 传递的消息。
在 DisplayMessageActivity
中,将以下代码添加到 onCreate()
方法中:
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_display_message) // 从启动该activity的intent中获取EXTRA_MESSAGE(键) val message = intent.getStringExtra(EXTRA_MESSAGE) // 获取布局当中的textView,并将其中的text赋值为message。 val textView = findViewById<TextView>(R.id.textView).apply { text = message } }
添加向上导航功能
在您的应用中,不是主入口点的每个屏幕(所有不是主屏幕的屏幕)都必须提供导航功能,以便将用户引导至应用层次结构中的逻辑父级屏幕。为此,请在应用栏中添加向上按钮。
若要添加向上按钮,您需要在 AndroidManifest.xml
文件中声明哪个 activity 是逻辑父级。打开 app > manifests > AndroidManifest.xml 文件,找到 DisplayMessageActivity
的 <activity>
标记,然后将其替换为以下代码:
<activity android:name=".DisplayMessageActivity" android:parentActivityName=".MainActivity"> <!-- 如果你支持的API level在15以下,则需要添加以下的meta-data标签 --> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".MainActivity" /> </activity>
这当中关键的就是在activity标签中添加了android:parentActivityName
属性。
参考文章
1.构建首个应用 | Android 基本信息 | Android Developers (google.cn)
2.巧用Kotlin:内置函数let、also、with、run、apply大大提高你的开发效率! – 云+社区 – 腾讯云 (tencent.com)