练习内容
1、启动与销毁Activity
- 首先创建一个工程ActivityTest,
- 创建一个名为FirstActivity的活动
- 在Manifest文件中注册该活动
- 重写onCreate方法,并在改方法中加载布局first_layout。
- 创建布局first_layout.xml,在该布局中添加一个Button控件
- 在onCreate方法中获得布局中Button的引用
- 重写onDestroy方法,并在该方法中用Log.d打印该Activity退出的信息:Activity名称+“退出了,bye!”
代码:
FirstActivity.kt
class FirstActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.first_layout) val button1 = findViewById<Button>(R.id.btn) button1.setOnClickListener { } // Log.d("FirstActivity", "FirstActivity启动了") } override fun onDestroy() { super.onDestroy() Log.e("FirstActivity", "FirstActivity退出了,bye!") } }
first_layout.xml
Button android:id="@+id/btn" android:layout_width="match_parent" android:layout_height="102dp" android:text="button" />
注冊文件:
<activity android:name=".FirstActivity" android:exported="true" android:label="This is my FirstActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
日志输出及结果:
2、启动Activity
- 创建SecondActivity和ThirdActivity, SecondActivity1加载布局second_layout,ThirdActivity加载布局third_layout。
- 在上题的FirstActivity的布局中添加两个按钮(Button1, Button2),点击Button1时使用显式Intent启动SecondActivity,点击Button2时使用隐式Intent启动ThirdActivity;
- 此外从FirstActivity中传递一个字符串”Hello SecondActivity”到SecondActivity中,并在SecondActivity中用TextView控件显示。(实验报告中只需写出onCreate方法,实现该功能的代码写在onCreate方法中
-
FirstActivity.kt
-
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.first_layout) val button1 = findViewById<Button>(R.id.btn1) val button2 = findViewById<Button>(R.id.btn2) button1.setOnClickListener { // 启动SecondActivity val intent = Intent(this@FirstActivity, SecondActivity::class.java) intent.putExtra("message", "Hello SecondActivity") startActivity(intent) } button2.setOnClickListener { // 启动ThirdActivity val intent = Intent("com.example.intent.action.THIRD_ACTIVITY") startActivity(intent) } }
first_layout.xml
<Button android:id="@+id/btn1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Start SecondActivity" android:layout_centerHorizontal="true" android:layout_marginTop="50dp"/> <Button android:id="@+id/btn2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Start ThirdActivity" android:layout_below="@id/btn1" android:layout_centerHorizontal="true" android:layout_marginTop="20dp"/>
SecondActivity.kt
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.second_layout) // 获取传递的消息 val message = intent.getStringExtra("message") // 在TextView中显示消息 val textView = findViewById<TextView>(R.id.textView) textView.text = message //返回按钮 val backButton = findViewById<Button>(R.id.backButton) backButton.setOnClickListener { finish() } }
second_layout.xml
<TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Message from FirstActivity" /> <Button android:id="@+id/backButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:rotationX="-5" android:text="Back" />
ThirdActivity.kt
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.third_layout) val textView = findViewById<TextView>(R.id.textView) textView.text="Third Activity" //返回按钮 val backButton = findViewById<Button>(R.id.backButton) backButton.setOnClickListener { finish() }
third_layout.xml
<TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Message from FirstActivity" /> <Button android:id="@+id/backButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:rotationX="-5" android:text="Back" />
注册文件必不可少
AndroidManifest.xml
<activity android:name=".FirstActivity" android:exported="true" android:label="FirstActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".SecondActivity" android:label="SecondActivity"> <!-- 如果需要在Intent中使用指定的Action来启动,可以在这里添加intent-filter --> </activity> <activity android:name=".ThirdActivity" android:exported="true" android:label="ThirdActivity"> <!-- 如果需要在Intent中使用指定的Action来启动,可以在这里添加intent-filter --> <intent-filter> <action android:name="com.example.intent.action.THIRD_ACTIVITY" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
结果: