Toast
在上篇文章中的onCreate()添加一些代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first_layout);
Button button1 = (Button) findViewById(R.id.button_1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(FirstActivity.this, "You clicked Button1",
Toast.LENGTH_SHORT).show();
}
});
}
findViewById方法获取布局文件中定义的元素,返回的是一个View对象,需要向下转型将它转成Button对象。得到button的示例后,我们通过调用setOnClickListener方法为按钮注册一个监听器,因此点击按钮就会执行监听器中的onClick方法。
Toast通过静态方法makeText()创建一个Toast对象,然后调用show()将Toast显示出来,其中需要传入3个参数:
- Context:上下文,由于活动本身就是一个Context对象,因此这里直接传入FirstActivity.this
- 文本内容
- 显示时长
Menu
在res目录新建menu文件夹→在menu中新建main的Menu resource file编写如下代码:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/add_item"
android:title="Add"></item>
<item
android:id="@+id/remove_item"
android:title="Remove"></item>
</menu>
回到活动中重写onCreateOptionsMenu方法
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
通过getMenuInflater方法得到MenuInflater对象,再调用它的inflate()方法给当前活动创建菜单,其中第二个参数用于指定我们的菜单项将添加到哪一个Menu对象中,这里直接使用onCreateOptionsMenu方法中传入的menu参数。返回bool值是否显示创建的菜单
如果要实现菜单的逻辑功能,那么需要重写onOptionsItemSelected方法:
@Override
public boolean onOptionsItemSelected(@NonNull 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;
}
结果如图所示:
销毁一个活动
其实只需要通过点击返回键就可以将该活动销毁,不过也可以通过代码来销毁,我们修改一下button的功能
@Override
public void onClick(View v) {
finish(); // 销毁活动
}
总结:
- 一些控件都先通过id获取相应的对象然后通过重写方法的方式来实现界面的交互