Android编程权威指南(第4版)
上QQ阅读APP看书,第一时间看更新

1.7 创建提示消息

接下来要实现的是,分别点击两个按钮,弹出我们称之为toast的提示消息。Android的toast是用来通知用户的简短弹出消息,用户无须输入什么,也不用做任何干预操作。这里,我们要用toast来反馈答案,如图1-17所示。

图1-17 toast消息反馈

首先回到strings.xml文件,如代码清单1-10所示,为toast添加消息显示用的字符串资源。

代码清单1-10 增加toast字符串(res/values/strings.xml)

<resources>
    <string name="app_name">GeoQuiz</string>
    <string name="question_text">Canberra is the capital of Australia.</string>
    <string name="true_button">True</string>
    <string name="false_button">False</string>
    <string name="correct_toast">Correct!</string>
    <string name="incorrect_toast">Incorrect!</string>
</resources>

接下来更新监听器代码以创建并展示toast消息。输入代码时可利用Android Studio的代码自动补全功能,这可以节省大量时间,所以越早熟悉它的使用越好。

参照代码清单1-11,在MainActivity.kt文件中依次输入代码。当输入到Toast类后的点号时,Android Studio会弹出一个窗口,给出建议使用的Toast类的常量与函数。

可以使用上下键进行选择。(如果不想使用代码自动补全功能,请不要按Tab键、Return/Enter键,或用鼠标点击弹出窗口,只管继续输入代码直至完成。)

在建议列表里,选择makeText(context: Context, resId: Int, duration: Int),代码自动补全功能会自动添加完整的函数调用。

完成makeText(...)函数的全部参数设置,完成后的代码如代码清单1-11所示。

代码清单1-11 创建提示消息(MainActivity.kt)

override fun onCreate(savedInstanceState: Bundle?) {
    ...
    trueButton.setOnClickListener { view: View ->
        // Do something in response to the click here
        Toast.makeText(
                this,
                R.string.correct_toast,
                Toast.LENGTH_SHORT)
                .show()
    }

    falseButton.setOnClickListener { view: View ->
        // Do something in response to the click here
        Toast.makeText(
                this,
                R.string.incorrect_toast,
                Toast.LENGTH_SHORT)
                .show()
    }
}

为了创建toast,我们调用了Toast.makeText(Context!, Int, Int)静态函数。该函数会创建并配置Toast对象。该函数的Context参数通常是Activity的一个实例(Activity本身就是Context的子类)。这里,我们传入MainActivity作为Context值参。

第二个参数是toast要显示字符串消息的资源ID。Toast类必须借助Context才能找到并使用字符串资源ID。第三个参数通常是两个Toast常量中的一个,用来指定toast消息的停留时间。

创建toast后,可调用Toast.show()在屏幕上显示toast消息。

由于使用了代码自动补全功能,因此你就不用自己导入Toast类了,Android Studio会自动导入相关类。

好了,现在可以运行应用了。