使用 Intent 启动 Activity和Activity之间的数据传递

在Android 程序之中,Activity 对象时和用户交互的唯一手段,几乎每个 Android 项目程序都有多个 Activity。因此,灵活的在屏幕上切换 Activity 尤为重要。下面让我们一起来看一下如何用 Intent 来启动 Activity 对象吧

首先,Intent 分为 显式 Intent 和隐式 Intent。显式 Intent 就是指定了要启动的 Activity 类,而隐式 Intent 就是不直接指定要启动的 Activity 类,通过一些动作和标志来筛选符合条件的 Activity 对象启动。
先来看一下显式 Intent 的构造方法:

Intent(Context packageContext, Class<?> cls) ;

第一个参数为 Context 对象,要求传入启动 Activity 的对象的引用,第二个参数要求传入要启动的 Activity 对象的类(也可以传入其他的组件(Service等等),这里只讨论 Activity 对象)。
例:

Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);

这个 Intent 对象指定了要启动的 Activity 对象,为显式 Intent 对象。当然,我们也可以在创建Intent 对象时不传入要启动的 Activity 对象,即为隐式Intent。例:

Intent intent = new Intent();   // 创建一个新的 Intent对象
intent.setAction(Intent.ACTION_VIEW);
intent.setData("http://www.baidu.com");
intet.addCategory("com.example.category.MY_CATEGORY");
startActivity(intent);
  第二行代码设置 Intent 启动的 Activity 对象可以执行的动作,动作可以自己定义,也可以使用Android自带的一些动作,此处使用了Android自带的访问网页的动作,那么系统将会寻找能够执行该动作的Activity并启动,如果有多个Activity,那么系统将会询问。
  第三行代码设置了Intent的数据,http:为网络协议,还有很多的协议,比如:tel: 为拨打电话的协议,此处设定为打开百度网页。
  第四行代码设置了 Intent 启动的Activity对象的标志,在这里可以把它看成一种筛选Activity的属性,只有和Intent对象的Action、Data、Category (如果Intent设置了这些属性)属性都相匹配的Activity,才会被该隐式Intent启动。

下面演示一些隐式Intent的用法:

创建一个新的Android工程
activity_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <Button 
        android:id="@+id/startActivityButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="隐式 Intent 启动  Activity"/>
</LineaLayout>

MainActivity.java:

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {
   
    private Button button = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = (Button) findViewById(R.id.startActivityButton);
        button.setOnClickListener(new View.OnClickListener()
 
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值