Android中Intent的显示和隐式使用-阿里云开发者社区

开发者社区> 文艺小青年> 正文

Android中Intent的显示和隐式使用

简介:
+关注继续查看

Android应用程序中组件之间的通信都少不了Intent的使用,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。intent就是意图的意思。Intent分两种:显式(Explicit intent)和隐式(Implicit intent)。

显示调用Intent

简单的Demo从一个Activity转到另外一个Aactivity:

Mainactivity的布局文件

1
2
3
4
5
6
7
8
9
10
11
12
<EditText
    android:id="@+id/edt_content"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
 
<Button
    android:id="@+id/btn_login"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/edt_content"
    android:onClick="login"
    android:text="查询" />

 

 Mainactivity中调用点击事件:

1
2
3
4
EditText  contentEditText=(EditText) findViewById(R.id.edt_content);
        Intent intent=new Intent(this,PersonActivity.class);
        intent.putExtra(EXTRA,contentEditText.getText().toString());
        startActivity(intent);

  这个时候的Intent就是显示调用,直接指定了接收参数的Activity,可以唯一确定一个Activity,意图特别明确,这个时候需要在PersonActivity接收参数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class PersonActivity extends Activity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_person);
        TextView  textView=(TextView) findViewById(R.id.txt_content);
        Intent intent=getIntent();
        String  str=intent.getStringExtra(MainActivity.EXTRA);
        textView.setText(str);
        textView.setTextSize(20);
        textView.setTextColor(Color.RED);
     
    }

另外这个时候传递的参数使用的方法是putExtra,如果传递的参数比较多可以使用Bundle类似于map。

隐式调用

隐式,即不是像显式的那样直接指定需要调用的Activity,隐式不明确指定启动哪个Activity,而是设置Action、Data、Category,让系统来筛选出合适的Activity。筛选是根据所有的<intent-filter>来筛选。

这个时候需要在AndroidManifest.xml中设置一下intent-filter中去设置一下,如下,Category直接使用默认的就行:

1
2
3
4
<intent-filter>
            <action android:name="com.example.googleone.Peson" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>

 Mainactivity中的调用使用,这个时候的调用:

1
2
Intent intent=new  Intent("com.example.googleone.Peson");
 startActivity(intent);

 这个自己定义的Action字符串可以调用自身程序的Activity,还可以其他应用程序的Action,比如说常用的拨号面板:

1
2
Intent intent = new Intent(Intent.ACTION_DIAL);
        startActivity(intent);

如果这个时候在AndroidManifest.xml文件中给PersonActivity, 加一个Action,如下:

1
2
3
4
5
6
7
8
9
<activity
          android:name=".PersonActivity"
          android:label="@string/title_activity_person" >
          <intent-filter>
              <action android:name="android.intent.action.DIAL"/> 
              <action android:name="com.example.googleone.Peson" />
              <category android:name="android.intent.category.DEFAULT" />
          </intent-filter>
      </activity>

Mainactivity中的调用:

1
2
3
4
5
6
7
8
9
10
11
Intent intent=new Intent(Intent.ACTION_DIAL);
    if(intent.resolveActivity(getPackageManager()) == null)
    {
        view.setEnabled(false);
    }
    try {
        startActivity(intent);
    catch (ActivityNotFoundException e) {
        // TODO Auto-generated catch block
    Toast.makeText(this,"找不到对应的Activity",Toast.LENGTH_SHORT).show();
    }

结果如图所示:

  

 Intent.ACTION_DIAL是系统常量字符串,等价于android.intent.action.DIAL,调用的时候通过这个action的名称,去寻找具有这个action的activity~

本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/4033299.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
**apache环境下 禁止显示 index of/ 目录下(如何禁止访问网站根目录)
比如: http://123.57.49.XX6//  当这样访问的时候,可能会列出网站的根目录 如何禁止列出网站目录,方法如下:   让别人知道你的网站目录结构直接查看你目录下的所有文件是很危险的一个事情。
901 0
Activity间中使用Intent传值
主页面用来输入一个值传入第二个页面显示,关闭第二个页面返回一个值 主页布局:   MainActivity,主要通过startActivityForResult来传递请求码,返回数据的时候,第二个页面调用Activity.
603 0
Droid@screen:在PC屏幕上显示Android手机屏幕
这里介绍一款工具——Droid@screen,用来获取手机屏幕,显示在PC屏幕上。它集截图、录像等多种功能于一体。 安装   1.    下载地址:http://droid-at-screen.org/download.html,下载后是一个jar包,放到某个目录就可以。
786 0
VS解决方案的“显示所有文件等属性”
VS解决方案属性中的六大金刚: 一、属性 二、显示所有文件 显示所有文件/隐藏某些文件。 三、刷新 四、查看代码 五、视图设计器 ...
781 0
Vim的行号、语法显示等设置(.vimrc文件的配置)以及乱码解决
在终端下使用vim进行编辑时,默认情况下,编辑的界面上是没有显示行号、语法高亮度显示、智能缩进 等功能的。为了更好的在vim下进行工作,需要手动设置一个配置文件:.vimrc。在启动vim时,当前用户根目录下的.vimrc文件会被自动读取,该文件可以包含一些设置甚至脚本, 所以,一般情况下把.vimrc文件创建在当前用户的根目录下比较方便,即创建的命令为:$vi ~/.vimrc #支持putty鼠标粘贴 if has('mouse')    set mouse -= a endif 设置完后$:x 或者 $wq 进行保存退出即可。
1016 0
3576
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载