Android开发——在活动中使用Toast,Menu,Item以及显隐式Intent的相关内容(四)

android开发 笔记(1.5)

  • 在活动中使用toast
  • 在活动中使用Menu
  • 在活动中创建两个菜单项
  • 销毁一个活动
  • 如何由主活动跳转到其他活动
    • 显式&&隐式Intent
    • 更多隐式Intent的用法


在活动中使用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和名字

< 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()方法中解析产生的。

你可能感兴趣的:(android开发)