概述
1、Activity 中 使用 Toast
Toast是Android提供的友好的提醒方式,在程序中可以它将一些较小的信息通知给用户,并在一段时间后自动消失,并且不占用屏幕空间。
定义一个弹出Toast的触发点。
首先在layout中声明一个Button。使用按钮的点击事件 作为弹出Toast的触发点。在onCreate()方法中添加如下代码:
class FirstActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.first_layout)
val button1: Button = findViewById(R.id.btn1)
button1.setOnClickListener {
Toast.makeText(this,"You clicked Button1",Toast.LENGTH_SHORT).show()
}
}
}
findViewById() :获取布局文件中定义的元素。这是在layout文件中定义的按钮的 id 。findViewById() 方法返回的是一个继承自View的泛型对象,Kotlin不能自动推导出它是哪种类型的控件。因此我们需要显式声明button1的类型。
得到按钮的实例后,通过调用setOnClickListener() 方法为按钮注册一个监听器,点击按钮时就会执行监听器中的onClick(0方法。
Toast的用法:
通过静态方法makeText() 创建一个Toast对象,然后使用show() 将Toast显示出来即可。
makeText() 有三个参数:
1.第一个参数是Context,即Toast要求的上下文,由于Activity本身就是一个Context对象,因此
这里直接传入this即可。
2.Toast显示的文本内容。
3.Toast显示的时常,有两个内置常量选择:Toast.LENGTH_SHORT (时间较短)和 Toast.LENGTH_LONG(时间较长)
findViewById() 的代码太过冗余,Kotlin使用了很多功能支持,之前的版本使用
'org.jetbrains.kotlin.android.extensions'插件,可以直接使用layout布局中控件的id进行调用。
但是Google快速发展,使用了ViewBinding来进行替换,替换的具体原因见:
kotlin-android-extensions插件也被废弃了?扶我起来_guolin的博客-CSDN博客_kotlin-android-extensions废弃kotlin-android-extensions插件可能算得上是我最喜欢的一个Kotlin在Android上的特性了。这么说并不夸张,因为以前在使用Java开发Android程序时,我们总是要写一大堆的findViewById,枯燥又没什么意义。虽然也有一些诸如ButterKnife之类的第三方库,专门用于对findViewById的用法进行简化,但是ButterKnife还是要通过注解来让控件与资源id之间进行绑定,并不算是非常方便。而kotlin-android-extensions插件的https://blog.csdn.net/guolin_blog/article/details/113089706其实使用ViewBinding 和 org.jetbrains.kotlin.android.extensions 都是为了避免编写findViewById()
能够直接使用layout中的控件id。
可以直接调用控件id,代码如下:
class FirstActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.first_layout)
button1.setOnClickListener {
Toast.makeText(this,"You clicked Button1",Toast.LENGTH_SHORT).show()
}
}
}
2、Activity 中 使用 Menu
首先要先创建两个菜单项,其中<item>标签用来创建具体的某一个菜单项。
然后通过id来给菜单项指定一个唯一标识符,通过title给菜单项指定一个名称。
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/add_item"
android:title="Add" />
<item
android:id="@+id/remove_item"
android:title="Remove" />
</menu>
然后回到MainActivity中重写 onCreateOptionsMenu() 方法,可以使用快捷键crtl+O 来快速重写。
重写代码如下:
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.main, menu)
return true
}
menuInflater.inflate() 是一个语法糖格式。
首先介绍一下这个语法糖的由来,正常的一个Java类,java代码如下:
public class Book {
private int pages;
public int getPages() {
return pages;
}
public void setPages(int pages) {
this.pages = pages;
}
}
在Kotlin中调用这种语法结构的java方法时,有更简单的方法,代码如下:
val book = Book()
book.pages = 500
val bookPages = book.pages
这里并没有调用Book类的setPages()和getPages()方法,而是直接对pages进行赋值和读取。这就是Kotlin提供的语法糖,他会在背后自动将上述代码自动调用setPages()和getPages()方法。
在重写 onCreateOptionsMenu() 时,menuInflater就是用了这种语法糖,他直接调用了父类的getMenuInflater()方法,此方法能够得到一个MenuInflater对象,然后再调用该对象的inflate()方法,就可以给当前Activity创建菜单了。
inflate()接受两个参数:
第一个参数:指定我们通过哪一个资源文件来创建菜单。资源文件是我们自己单独创建。
第二个参数:指定我们的菜单项将添加到哪一个Menu对象当中,这里直接使用onCreateOptionsMenu中传入的menu参数,最后这个方法返回true,能够显示出来,否则不能显示。
最后,仅让菜单显示出来不够,还需要菜单能够真正可用,需要定义菜单响应事件。
需要在mainActivity中重写 onOptionsItemSelected() 方法,代码如下:
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.add_item -> Toast.makeText(this, "You clicked Add", Toast.LENGTH_SHORT).show()
R.id.remove_item -> Toast.makeText(this, "You clicked Remove", Toast.LENGTH_SHORT).show()
}
return super.onOptionsItemSelected(item)
}
其中item.itemId 也是一个语法糖格式,直接调用了 Item 类中的 getItemId() 方法,然后交给when去判断。
3、销毁一个 Activity
可直接删除。
也可以通过程序代码来销毁,提供了一个finish()函数,只需要调用即可销毁。
将finish()放到按钮的click事件中,可通过点击按钮进行销毁。
button1.setOnClickListener {
Toast.makeText(this,"You clicked Button1",Toast.LENGTH_SHORT).show()
finish()
}
最后
以上就是缥缈中心为你收集整理的初识Android(一):Toast、Menu实现以及销毁Activity1、Activity 中 使用 Toast2、Activity 中 使用 Menu3、销毁一个 Activity 的全部内容,希望文章能够帮你解决初识Android(一):Toast、Menu实现以及销毁Activity1、Activity 中 使用 Toast2、Activity 中 使用 Menu3、销毁一个 Activity 所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复