美文网首页
Activity的读书笔记(一)

Activity的读书笔记(一)

作者: wjinglee | 来源:发表于2018-02-26 21:34 被阅读0次

Activity的基本用法

在AndroidManifest文件中注册

  1. 主活动的配置
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>

通过<intent-filter>里面这两句的设置,应用的主活动就配置好了。

使用Intent在活动间穿梭

  1. 使用显式Intent
Intent intent = new Intent(FirstActivity.this, SecondAactivity.class);
startActivity(intent);

new Intent() 里第一个参数是 FirstActivity.this, 就是当前的上下文, 而SecondActivity.class 是要启动的活动。

  1. 使用隐式Intent
    相较于显式Intent, 隐式Intent则更加含蓄。它是通过Activity的<action>和<category> 标签,来让系统分析要启动的相应活动,让用户进行选择。
    隐式Intent的启动方法:
Intent intent = new Intent("com.example.activitytest.ACTION_START");
intent.addCategory("com.example.activitytest.MY_CATEGORY");
startActivity(intent);

隐式Intent,需要添加action 和 category才能匹配对应的activity, 如果activity的<category>设置如下,则只声明action就可以了。

<category android:name="android.intent.category.DEFAULT"/>

-一个activity只能有一个action,但可以有多个category
-如果没有满足对应条件的activity存在,程序会崩溃。

  1. 更多隐式Intent的用法
    在<intent-filter> 中配置<data>标签,用于指定当前活动能够相应什么类型性的数据。
  • android:scheme 指定数据的协议部分, 例 “http”
  • android:host 指定数据的主机名部分, 例 “www.baidu.com
  • android : port 数据的端口部分,一般紧随在主机名后。
  • android : mimeType 用于指定可以处理的数据类型,允许使用通配符的方式进行指定。
    (1). 打开浏览器
  • intent
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
  • activity 标签设置
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="http"/>
</intent-filter>

(2). 打开拨号界面

Intent intent = new Intent(Intent.ACTION_DAIL);
intent.setData(Uri.parse("tel:10086"));
startActivity(intent);

启动这个intent 会自动打开拨号界面。

  1. 向下一个activity 传递数据
    在开启下一个activity的时候可以传递数据, string, int, boolean等数据类型。
  • 给NextActivity 添加数据
String data = "content pass to next activity";
String key = "key for passing content";
Intent intent = new Intent (ThisActivity.this, NextActivity.class);
intent.putExtra("key", data);
startActivity(intent);
  • NextActivity 打开传递的数据
    在 NextActivity的 onCreate()方法中获取数据
String key = "key for passing content";
Intent intent = getIntent();
String data = intent.getStringExtra(key);
  1. 返回数据给上一个activity
    要想开启一个可以返回数据的活动,需要使用startActivityForResult()方法。
    假设我们现在在ThisActivity中,要开启 NextActivity,并让NextActivity返回数据。
  • ThisActivity 中开启下一个activity
int requestCode = 1;
Intent intent = new Intent (ThisActivity.this, NextActivity.class);
startActivityForResult(intent, requestCode);
  • NextActivity 结束并返回数据给前一个活动
Intent intent = new Intent();
intent.putExtra("key", "value");
setResult(RESULT_OK, intent);
finish(); // 结束当前活动
  • ThisActivity 中读取 NextActivity返回的数据
protected void onActivityResult(int requestcode, int resultcode, Intent intent) {
  switch(requestcode) {
    case 1:
      if (resultcode == RESULT_OK) {
        String data = intent.getStringExtra("key");
      }
    break;
  }
}

今天就先聊到这里啦,下一篇我们接着讨论activity的生命周期~~
送你们一支大勋❀

相关文章

网友评论

      本文标题:Activity的读书笔记(一)

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