在活动中使用toast
在活动中使用它把一些短小的信息通知给用户,这些信息会在一段时间内消失,并不会占用任何屏幕空间。
- 首先定义一个toast的触发点,结合昨天的文章,按动按钮弹出这个toast
- 通过findViewById()方法获取到布局文件中定义的元素,findViewById()方法得到得到view需要转换为button的对象,所以用到 Button button_1=(Button) findViewById(R.id.button_1);
- 得到按钮的事例后,通过调用setOnClickListener()方法为按钮注册一个监听器,点击按钮就会执行监听器中onClick()方法
- Toast的功能在onClick()中编写
Toast.makeText(FirstActivity.this, “You click Button_1”, Toast.LENGTH_SHORT).show();
通过静态方法makeText()创建出一个toast对象,然后调用show()将其显示出来。
-makeText()需要上传三个参数,FirstActivity.this【Context,活动本身就是一个Context对象】,文本内容,显示时长【可以选择Toast.LENGTH_SHORT).show()或者Toast.LENGTH_LONGTH).show()】
public class FirstActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first_layout);
Button button_1=(Button) findViewById(R.id.button_1);
button_1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(FirstActivity.this, "You click Button_1", Toast.LENGTH_SHORT).show();
}
});
}
}
点击按钮后 效果图如图:
在活动中使用Menu
- 在res中建立一个menu
- 在menu中新建一个mian的菜单文件夹
在活动中创建两个菜单项
- 创建两个菜单项(黄色部分),id和名字
<?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 android:id="@+id/remove_item"
android:title=“Remove”>
< /menu>
-
ctrl+0重建一个onCreateOptionMenu
-
getMenuInflater得到对象,再调用它的inflate()方法完成创建活动菜单
-
定义菜单响应事件
onOptionsItemSelected()中调用item.getItemId()来判断点击的是哪个菜单项,然后每个菜单项分别加入自己的逻辑处理
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.add_item:
Toast.makeText(this, "clicked Add", Toast.LENGTH_SHORT).show();
case R.id.remove_item:
Toast.makeText(this, "Remove", Toast.LENGTH_SHORT).show();
break;
default:
}
return true;
}
运行效果图如图所示:
销毁一个活动
可以按界面上的back键
或者修改监听器中的代码:
改为finish();
如何由主活动跳转到其他活动
- 和之前firstActivity一样的创造步骤建立出SecondActivity
- 在layout中修改如下(加入一个button):
- 因为配置的secondActivity不是主活动所以不需要配置< inter-filter>标签里的内容
- 如何启动第二个活动 ->引入Intent的概念
Intent是android程序中各组件之间交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。用于启动活动,启动场景,发送广播等场景。
Intent一般分为两种 显式Intent和隐式Intent。
显式&&隐式Intent
①显式Intent
首先建立一个Intent,传入FirstActivity.this作为上下文,传入SecondActivity。class作为目标活动。所以就是firstactivity这个活动的基础上打开secondactivity这个活动,然后通过stratactivity()这个方法来执行这个Intent。
②隐式Intent
- 通过在activity标签下配置intent-filter,可以指定当前活动能够响应的action和category,打开AndroidManifest.xml添加如下代码:
其中< action>中指明了当前活动可以响应com.example.first_activity.ACTION_START这个action,< category>标签则包含一些附加信息,更精确指明了当前活动能够响应的Intent中还可能带有的category。只有action和category同时匹配到,活动才能响应Intent。
- 修改FirstActivity按钮的点击事件代码如下:
因为category是默认的category,所以在startActivity时候会自动把这个category添加到Intent中
、
重新运行程序,与显式一样。
注:每个Intent中只能指定一个action但可以指定多个category。
在默认category的基础上我们再增添一个category。
需要提前在AndroidManifest.xml中添加一个category声明
再调用Intent中的addCategory()方法调用添加一个category,值为com.example.first_activity.MY_CATEGORY
更多隐式Intent的用法
点击按钮跳转网页:
Button button_1 = (Button) findViewById(R.id.button_1);
button_1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
}
});
- 指定Intent的action是Intent.ACTION_VIEW,这是一个android系统的内置动作,然后通过Uri.parse()方法将这个Uri对象传递出去。
关于setData():接收Uri对象,主要是用于指定当前Intent正在操作的数据,而这些数据通常是以字符串的形式传入到Uri.parse()方法中解析产生的。