创建测试项目,验证和观察Activity生命周期,使用Intent实现Activity之间的跳转:
1、创建TestActivity项目;
2、创建SecondActivity及相应布局;
3、在MainActivity和SecondActivity中重写onStart()、onResume()等生命周期事件方法,在其中使用Log输出日志信息;
4、在MainActivity中编写点击按钮的onClick()方法,使用Intent打开SecondActivity;
5、运行程序,观察在Activity的创建、显示、关闭、切换等恢复显示等过程中各个生命周期事件方法的触发情况。
0.创建项目
根据要求随便创建一个项目即可
1.创建SecondActivity及相应布局
在Android Studio中,右键点击项目的app
目录,选择“New” > “Activity” > “Empty Activity”。
命名新的Activity为SecondActivity
,并在创建布局文件时选择activity_second.xml
在activity_second.xml
中定义布局
以下是一个简单的示例,包含一个TextView和一个Button:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp"
android:gravity="center">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This is SecondActivity"
android:textSize="18sp"
android:textColor="#000"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Go Back"
android:id="@+id/backButton"/>
</LinearLayout>
实现效果
2.重写生命周期方法
导入TAG,并设置常量标签
请确保导入android.util.Log
类,并设置一个常量标签
private val TAG = "SecondActivity"
在MainActivity
和SecondActivity
中,在MainActivity
和SecondActivity
中重写需要观察的生命周期方法(例如onStart()
、onResume()
等)。
并在这些方法内部使用Log
输出日志信息。
@Override
protected void onStart() {
super.onStart();
Log.d(TAG, "onStart() called");
}
@Override
protected void onResume() {
super.onResume();
Log.d(TAG, "onResume() called");
}
直接复制进入Android Studio将会自动转换!!
转换的代码
override fun onStart() { super.onStart() Log.d(TAG, "onStart() called") } override fun onResume() { super.onResume() Log.d(TAG, "onResume() called") }
MainActivity代码
package com.leo.activity_1
import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.view.View
import androidx.activity.ComponentActivity
class MainActivity : ComponentActivity() {
private val TAG = "MainActivity"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main)
}
override fun onStart() {
super.onStart()
Log.d(TAG, "onStart() called")
}
override fun onResume() {
super.onResume()
Log.d(TAG, "onResume() called")
}
fun openSecondActivity(view: View?) {
val intent = Intent(this, SecondActivity::class.java)
startActivity(intent)
}
}
SecondActivity代码
package com.leo.activity_1
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.view.View
class SecondActivity : AppCompatActivity() {
private val TAG = "SecondActivity"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.second)
}
override fun onStart() {
super.onStart()
Log.d(TAG, "onStart() called")
}
override fun onResume() {
super.onResume()
Log.d(TAG, "onResume() called")
}
fun goBack(view: View?) {
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
}
}
3.打开SecondActivity
添加按钮
在activity_main.xml
中添加一个按钮,为按钮添加android:onClick="openSecondActivity"
属性,这将关联按钮点击事件与openSecondActivity
方法
如果
activity_main.xml
不存在,请自行创建
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
tools:context=".MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Open Second Activity"
android:id="@+id/openSecondButton"
android:layout_centerInParent="true"
android:onClick="openSecondActivity" />
</RelativeLayout>
添加方法
在MainActivity中编写按钮的onClick()
方法:
public void openSecondActivity(View view) {
Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);
}
ktlion代码
fun openSecondActivity(view: View?) { val intent = Intent(this, SecondActivity::class.java) startActivity(intent) }
4.运行程序并观察生命周期事件:
- 在Android Studio中,点击绿色的运行按钮以运行你的应用程序。
- 在模拟器或连接的Android设备上,点击按钮以触发跳转到
SecondActivity
。 - 观察Logcat窗口中的输出,查看生命周期方法的调用情况,了解Activity的创建、显示、关闭和切换过程
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
如果出现
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.leo.activity_1/com.leo.activity_1.SecondActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
——出现了不兼容的问题需要点击
mainifests
,修改theme为@style/Theme.AppCompat.DayNight.DarkActionBar
实现效果