美文网首页
Android-Intent的使用

Android-Intent的使用

作者: 其实我很菜啊 | 来源:发表于2017-09-29 20:17 被阅读0次
什么是Intent

Intent是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递参数。Intent一般可被用于启动活动、启动服务以及发送广播。
Intent大致可以分为两种:显示Intent和隐式Intent。Intent有多个构造函数的重载,其中一个是Intent(Context packageContext,Class<?>cls)。这个构造函数接收连个参数,第一个参数Context要求提供一个启动的上下文,第二个参数Class则是指定想要启动的目标活动,通过这个构造函数就可以构建出Intent要达到的意图。Activity类中提供了一个startActivity()方法,这个方法是专门用于启动活动的。如

button.setOnClickListener(new View.onClickListener(){
    @Override
    public void onClick(View v){
          Intent intent=new Intent(MainActivity.this,SecondActivity.class);
          startActivity(intent)
    }
})

这一段代码的意思是创建一个Intent对象,传入MainActivity.this作为Context,即在MainActivity这个活动的基础之上打开SecondActivity这个活动。这种就是显示使用Intent。
相比于显示Intent,隐式Intent则含蓄很多,它并不明确指出要启动哪一个活动,而是指定一系列更为抽象的action和category等信息,然后交给系统去分析这个Intent,并找出合适的活动去启动。通过在<activity>标签下配置<intent-filter>的内容,可以指定当前活动能够响应的action和category。同样我们要实现在MainActivity页面响应SecondActivity页面,首先是要修改AndroidManifest.xml文件

<activity android:name=".SecondActivity">
      <intent-filter>
            <action android:name="com.example.activity.ACTION_START"/>
            <category  android:name="android.intent.category.DEFAULT"/>
        </intent-filter>
<activity>

然后修改MainActivity中的代码:

button.setOnClickListener(new View.onClickListener(){
    @Override
    public void onClick(View v){
          Intent intent=new Intent(com.example.activity.ACTION_START);
          startActivity(intent)
    }
})

要注意的是只有在<action>和<category>中的内容同时能够匹配上Intent中指定的action和category时,活动才能够相应Intent。

使用Intent向活动传递参数

Intent除了用于启动一个新的Activity之外还有一个很重要的作用,即向另一个Activity传递参数。在启动活动时传递参数很简单,Intent中提供了一系列putExtra()方法的重载,把数据暂存到Intent中,启动了另一个活动之后,只需要把这些数据再从Intent中取出就好了。比如说我们需要把FirstActivity中的一个字符串传递到SecondActivity中:

button.setOnClickListener(new View.onClickListener(){
    @Override
    public void onClick(View v){
          String data="Hello World"
          Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
          intent.putExtra("extra_data",data);
          startActivity(intent)
    }
})

在putExtra这个方法中有两个参数,第一个参数是Key第二个即是Value,那么如何在SecondActivity中取出data字符串呢

protected void onCreate(Bundle sacedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.second_layout);
      Intent intent=getIntent();
      String data=intent.getStringExtra("extra_data");
      Log.i("String is",data);
}

在SecondActivity中使用getIntent获取得到启动SecondActivity的Intent,然后调用putStringExtra()方法传入相应的key,就可以取得想要的value了。不同的类型有不同的取值方法要灵活应用。

向上一个活动返回参数

Intent即存在向下一个活动传参,那么必然也会存在向上一个活动传参。在Activity中有一个startActivityForResult()方法,当这个方法期望在活动销毁时能够返回一个结果给上一个活动。嗯我们需要的便是这一个效果了,首先先修改FirstActivity

button.setOnClickListener(new View.onClickListener(){
    @Override
    public void onClick(View v){       
          Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
         startActivityForResult(intent,1);
    }
})

现在我们使用的是 startActivityForResult()方法来启动SecondActivity活动,代码中的"1"只要是一个唯一值即可,修改SecondActivity代码

button2.setOnClickListener(new View.onClickListener(){
    @Override
    public void onClick(View v){       
          Intent intent=new Intent();
          intent.putExtra("data_return","Go to FirstActivity");
          setResult(RESULT_OK,intent);
          finish();
    }
})

这样是否就能达到我们想要的结果呢?那当然是不行咯,我们还没有在FirstActivity中接收SecondActivity的参数呢。当我们销毁SecondActivity活动之后会回调上一个活动的onActivityResult()方法,So我们现在修改一下FirstActivity的代码吧

@Override
protected void onActivityResult(int requestCode,int resultCode,Intent data){
        switch(requestCode){
              case 1:
                      if(resultCode==RESULT_OK){
                          String returnData=data.getStringExtra("data_return");
                          Log.i("I lvoe Android",returnData);    
                      }
                      break;
                   default:
            }
}

onActivityResult()方法有三个参数,requestCode即启动活动时传入的请求码就是那个"1",resultCode是返回数据时传入的处理结果,第三个便是带有参数返回的Intent了。
好了,Intent的常用使用大概就是这些希望能帮助到你

相关文章

  • Android-Intent的使用

    什么是Intent Intent是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要...

  • Android-Intent

    Intent简介 Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作...

  • Android-Intent的Flag标志

    Intent的Flag标志 Task就是一个任务栈,里面用来存放Activity,第一个进去的(Activity)...

  • Android-intent传递数

    先来复习一下序列化 https://www.jianshu.com/p/c2a6161f1546 Parcelab...

  • iconfont的使用(下载使用)

    1、下载文件 2、在生命周期中引入项目 beforeCreate () { var domModule = ...

  • Gson的使用--使用注解

    Gson为了简化序列化和反序列化的过程,提供了很多注解,这些注解大致分为三类,我们一一的介绍一下。 自定义字段的名...

  • 记录使用iframe的使用

    默认记录一下----可以说 这是我第一次使用iframe 之前都没有使用过; 使用方式: 自己开发就用了这几个属...

  • with的使用

    下面例子可以具体说明with如何工作: 运行代码,输出如下

  • this的使用

    什么是this? this是一个关键字,这个关键字总是返回一个对象;简单说,就是返回属性或方法“当前”所在的对象。...

  • this的使用

    JS中this调用有几种情况 一:纯粹的函数调用 这是函数的最通常用法,属于全局性调用,因此this就代表全局对象...

网友评论

      本文标题:Android-Intent的使用

      本文链接:https://www.haomeiwen.com/subject/qdmeextx.html