实现点击按钮,发送消息并跳转到另一个Activity
- MainActivity添加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 intent = Intent(this, DisplayMessageActivity::class.java).apply {
putExtra(EXTRA_MESSAGE, "my message")
}
startActivity(intent)
}
}
通过 EXTRA_MESSAGE
传递消息: "my message"
给新的Activity
Intent 构造函数会获取两个参数:Context(this) 和 Class(要启动的 activity)
putExtra参数要传入独一无二的字串和要传递的消息
startActivity() 方法将启动一个由 Intent 指定的 DisplayMessageActivity 实例
- 添加Send按钮
拖动一个Button到activity_main.xml中,并定义点击时调用sendMessage
方法
btnNumbers.setOnClickListener{
Log.e("click", "click btn Numbers")
val intent = Intent(this, NumbersMainActivity::class.java).apply{
putExtra(EXTRA_NUMBERS_MESSAGE, "numbers message")
}
startActivity(intent)
}
此时NumbersMainActivity还没有创建,显示红色
- 创建新的 Activity
右键MainActivity.kt的文件夹,新建Empty Activity,填入DisplayMessageActivity,在其中写入
class NumbersMainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_numbers_main)
val message = intent.getStringExtra(EXTRA_NUMBERS_MESSAGE)
val textView = findViewById<TextView>(R.id.textViewNumbers).apply {
text = message
}
}
}
修改 activity_numbers_main.xml, 拖入一个 TextView元素,并设置id为textViewNumbers,用于显示收到的消息
- 返回按钮 (向上导航)
修改 AndroidManifest.xml
的 <activity>
<activity android:name=".DisplayMessageActivity"
android:parentActivityName=".MainActivity">
<!-- The meta-data tag is required if you support API level 15 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
</activity>
就是这个