Activity的读书笔记(一)

2018-02-26  本文已影响0人  wjinglee

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>标签,用于指定当前活动能够相应什么类型性的数据。
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
<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等数据类型。
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);
String key = "key for passing content";
Intent intent = getIntent();
String data = intent.getStringExtra(key);
  1. 返回数据给上一个activity
    要想开启一个可以返回数据的活动,需要使用startActivityForResult()方法。
    假设我们现在在ThisActivity中,要开启 NextActivity,并让NextActivity返回数据。
int requestCode = 1;
Intent intent = new Intent (ThisActivity.this, NextActivity.class);
startActivityForResult(intent, requestCode);
Intent intent = new Intent();
intent.putExtra("key", "value");
setResult(RESULT_OK, intent);
finish(); // 结束当前活动
protected void onActivityResult(int requestcode, int resultcode, Intent intent) {
  switch(requestcode) {
    case 1:
      if (resultcode == RESULT_OK) {
        String data = intent.getStringExtra("key");
      }
    break;
  }
}

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

上一篇 下一篇

猜你喜欢

热点阅读