目录
1.主函数代码如下
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
2.Activity
2.1Activity的生命周期
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
Log.i("Activity生命周期","onCreate方法调用,第一次创建时进行调用")
}
override fun onStart() {
super.onStart()
Log.i("Activity生命周期","onStart方法调用,不可见变为可见的时候调用")
}
override fun onResume() {
super.onResume()
Log.i("Activity生命周期","onResume方法调用,进入到了前台,可以同用户进行交互了")
}
override fun onPause() {
super.onPause()
Log.i("Activity生命周期","onPause方法调用,启动另一个 Activity 的时候调用")
}
override fun onStop() {
super.onStop()
Log.i("Activity生命周期","onStop方法调用,Activity不可见且在内存中")
}
override fun onDestroy() {
super.onDestroy()
Log.i("Activity生命周期","onDestroy方法调用,Activity即将被销毁")
}
override fun onRestart() {
super.onRestart()
Log.i("Activity生命周期","onRestart方法调用,Activity重新切入前台")
}
}
AndroidManifest中代码如下,注意:四大组件必须在AndroidManifest中注册才可以使用
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.RedDemo">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
- android:name是对应Activity的类名称
- android:label是Activity标题栏显示的内容. 现已不推荐使用
- 是意图过滤器. 常用语隐式跳转
- 是动作名称,是指intent要执行的动作
- 是过滤器的类别 一般情况下,每个 中都要显示指定一个默认的类别名称,即
<category android:name="android.intent.category.DEFAULT" /
2.2两种启动方式
1.显式启动:通过包名来启动
val intent = Intent(MainActivity.this,SecondActivity.class)
startActivity(intent);
2.隐式启动
在AndroidManifest中注册使用
<activity android:name=".SecondActivity">
<intent-filter>
<action android:name="com.example.firstapp.action.SecondActivity" />
<category android:name="com.example.firstapp.category.SecondActivity" />
<category android:name="android.intent.category.DEFAULT" /> // 一定要有
</intent-filter>
</activity>
2.3数据传递bundle
Bundle主要用于传递数据;它保存的数据,是以key-value(键值对)的形式存在的。
val bundle = Bundle()
bundle.putInt("key_int",100)
bundle.putString("key_string","key_string_value")
studyFragment.argments= Bundle
2.4Intent
1.显示intent
intent()
- 第一个参数
Context
要求提供一个Activity的上下文 - 第二个参数
Class
用于指定想要启动的目标Activity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
Log.i("Activity生命周期","onCreate方法调用,第一次创建时进行调用")
val button = findViewById<View>(R.id.myButton)
button.setOnClickListener{
//从当前Activity跳转到MyActivity
val intent = Intent(this,MyActivity::class.java)
//startActivity()方法专门用于启动Activity
//他接受一个Intent参数
startActivity(intent)
}
}
}
2.隐式intent
在AndroidMainifest.xml
中修改MyActivity的标签属性
<activity android:name=".MyActivity" android:label="MyActivity">
<intent-filter>
<!--指定当前Activity可以响应的action和category-->
<action android:name="com.example.myapplication.ACTION_START"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.MYCAT"/>
</intent-filter>
</activity>
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
Log.i("Activity生命周期","onCreate方法调用,第一次创建时进行调用")
val button = findViewById<View>(R.id.myButton)
button.setOnClickListener{
//将action的内容传入Intent
val intent = Intent("com.example.myapplication.ACTION_START")
//指定category(也可指定多个)
intent.addCategory("android.intent.category.MYCAT")
//启动能同时匹配上述action和category的Activity
startActivity(intent)
}
}
}
只有action
和category
标签中的内容同时匹配Intent
中的指定action
和category
时,这个Activity
才能响应该Intent