1 创建 Activity 的目录是:app/src/main/java/com.example.activitytest
2 创建布局的目录是:app/src/main/res
3 在 Activity 中加载布局:使用 setContentView() 方法,参数一般是布局文件的id
class FirstActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.first_layout)
}
}
4 所有的 Activity 都需要在 AndroidManifest.xml
的 application
标签中进行注册。Label还会是应用显示的名称。
5 配置主 Activity:在 <activity>
标签内部加入<intent-filter>
<activity android:name=".FirstActivity"
android:label = "This is qer's first activity!">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
6 kotlin-android-extensions
插件
引入方法:
在build.gradle
中
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-android-extensions'
}
下面 dependencies
还需要加上
mplementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
(如果原先没有的话)
然后就可以愉快的直接使用id操作控件了。
7 Toast
button1.setOnClickListener {
Toast.makeText(this, "You clicked button", Toast.LENGTH_SHORT).show()
}
8 菜单项 Menu
res目录下新建menu文件夹,然后在里面创建菜单的xml
然后加入item作为某一个菜单项
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/add_item"
android:title="Add"/>
<item
android:id="@+id/remove_item"
android:title="Remove"/>
</menu>
重写create 和 select方法
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.main, menu)
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) { // 类似的这种其实都是语法糖,itemId是private,这里是调用了 getItemId()
R.id.add_item -> Toast.makeText(this, "You clicked Add", Toast.LENGTH_SHORT).show()
R.id.remove_item -> Toast.makeText(this, "You clicked Remove", Toast.LENGTH_SHORT).show()
}
return true
}
9 销毁 Activity
button1.setOnClickListener {
finish()
}
10 Intent
显式
val intent = Intent(this, SecondActivity::class.java) // 第二个参数作为目标 Activity,相当于 java 中的 SecondActivity.class
startActivity(intent)
隐式
指定一系列action和category,其中每个Activity只能1个acion,可以多个category,然后intent响应能全部匹配的那个
<activity android:name=".SecondActivity">
<intent-filter>
<action android:name="com.example.activitytest.ACTION_START" />
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="com.example.activitytest.MY_CATEGORY"/>
</intent-filter>
</activity>
val intent = Intent("com.example.activitytest.ACTION_START")
intent.addCategory("com.example.activitytest.MY_CATEGORY")
startActivity(intent)