Android学习笔记5:探究活动2

《第一行代码——Android》郭霖著

在活动中使用Toast

Toast是Android系统提供的一种非常好的提醒方式,在程序中可以使用它将一些短小的信息通知给用户,这些信息会在一段时间后自动消失,并且不会占用任何屏幕空间,我们现在就尝试一下如何在活动中使用Toast。

使用Toast的方法非常简单,在onCreate()方法中添加代码:

Button button1 = (Button) findViewById(R.id.button_1);
button1.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(FirstActivity.this, "You clicked Button 1",
        Toast.LENGTH_SHORT).show();
    }
});

在活动中,可以通过findViewById()方法获取到在布局文件中定义的元素,这里我们传入R.id.button_1,来得到按钮的实例,这个值是刚才在first_layout.xml中通过android:id属性指定的。findViewById()方法返回的是一个View对象,我们需要向下转型将它转成Button对象。得到了按钮的实例之后,我们通过调用setOnClickListener()方法为按钮注册一个监听器,点击按钮时就会执行监听器中的onClick()方法。因此,弹出Toast的功能当然是要在onClick()方法中编写了。

Toast的用法非常简单,通过静态方法makeText()创建出一个Toast对象,然后调用show()将Toast显示出来就可以了。这里需要注意的是,makeText()方法需要传入三个参数。第一个参数是Context,也就是Toast要求的上下文,由于活动本身就是一个Context对象,因此这里直接传入FirstActivity.this即可。第二个参数是Toast显示的文本内容,第三个参数是Toast显示的时长,有两个内置常量可以选择Toast.LENGTH_SHORT和Toast.LENGTH_LONG。

效果如下图所示:
Android学习笔记5:探究活动2_第1张图片

在活动中使用Menu

菜单是手机应用中经常使用到的功能。平时菜单是隐藏的,只有当按下菜单键时,菜单弹出,我们选择自己需要的功能。怎样实现这样的效果呢?方法就是在活动中使用Menu。

  • 首先我们像前一篇中在res下添加layout文件夹一样,在res下添加menu文件夹。如下图。
    Android学习笔记5:探究活动2_第2张图片

  • 在menu文件夹上右击new→Menu resource file,如下图所示,填写文件名为main。点击OK,就生成了main.xml文件。
    Android学习笔记5:探究活动2_第3张图片

  • 打开main.xml文件,插入如下代码:

<item  android:id="@+id/add_item" android:title="Add"/>
<item  android:id="@+id/remove_item" android:title="Remove"/>

这里我们创建了两个菜单项,其中标签就是用来创建具体的某一个菜单项,然后通过android:id给这个菜单项指定一个唯一标识符,通过android:title给这个菜单项指定一个名称。
* 然后打开FirstActivity,重写onCreateOptionsMenu()方法,代码如下所示:

public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

通过getMenuInflater()方法能够得到MenuInflater对象,再调用它的inflate()方法就可以给当前活动创建菜单了。inflate()方法接收两个参数,第一个参数用于指定我们通过哪一个资源文件来创建菜单,这里当然传入R.menu.main,第二个参数用于指定我们的菜单项将添加到哪一个Menu对象当中,这里直接使用onCreateOptionsMenu()方法中传入的menu参数。然后给这个方法返回true,表示允许创建的菜单显示出来,如果返回了false,创建的菜单将无法显示。
Android学习笔记5:探究活动2_第4张图片

  • 为了使我们的菜单不仅能显示,而且能够响应操作,我们来给它加上响应函数。打开FirstActivity,重写onOptionsItemSelected()方法:
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.add_item:
        Toast.makeText(this, "You clicked Add", Toast.LENGTH_SHORT).show();
        break;
    case R.id.remove_item:
        Toast.makeText(this, "You clicked Remove", Toast.LENGTH_SHORT).show();
        break;
    default:
    }
    return true;
}

在onOptionsItemSelected()方法中,通过调用item.getItemId()来判断我们点击的是哪一个菜单项,然后给每个菜单项加入自己的逻辑处理,这里我们就活学活用,弹出一个刚刚学会的Toast。
* 运行程序。。咦。。菜单键在哪里???为了更好地演示效果,让我们把继承自Activity的FirstActivity更改为继承自AppCompatActivity。现在标题栏显示了出来,让我们点击一下右上角的小图标,菜单显示出来了,效果如下。
Android学习笔记5:探究活动2_第5张图片

Android学习笔记5:探究活动2_第6张图片

销毁一个活动

如何销毁一个活动呢?

其实答案非常简单,只要按一下Back键就可以销毁当前的活动了。不过如果你不想通过按键的方式,而是希望在程序中通过代码来销毁活动,当然也可以,Activity类提供了一个finish()方法,我们在活动中调用一下这个方法就可以销毁当前活动了。
修改按钮监听器中的代码,如下所示:

button1.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        finish();
    }
});

重新运行程序,这时点击一下按钮,当前的活动就被成功销毁了,效果和按下Back键是一样的。

你可能感兴趣的:(android,AS)