Android:Activity & Intent

 
2.2 Activity的基本用法
  • 隐藏标题栏
    • 在AndroidManifest.xml中配置,作为全局配置,在所有Activity范围内生效
      • android:theme="@android:style/Theme.NoTitleBar"
    • 在代码中配置,必须在setContentView()前调用该方法,只在当前Activity生效
      • requestWindowFeature(Window.FEATURE_NO_TITLE);
    • 在style.xml中设置
 
 
2.3 Intent的应用场景
  • Activity
  • Service
  • BroadcastReceiver
 
2.3.1 显式Intent
  • Intent intent = new Intent(CurrentActivity.this, NextActivity.class);
  • startActivity(intent);
  • 明确指定了下一个Activity
 
2.3.2 隐式Intent
     代码中创建Intent对象时并不明确指向具体的Activity。设定该Intent对象的action/category/data,在startActivity(intent)时,系统会调用在AndroidManifest.xml中注册的Activity,<intent-filter>里指定的action/category/data,必须与代码的设定完全一致。
  • action
    • Intent intent = new Intent(Intent.ACTION_VIEW);
    • 此处的ACTION_VIEW即为action。每个Intent对象只有一个action,可自定义
    • Intent.ACTION_VIEW响应打开浏览器的动作
    • Intent.ACTION_DIAL响应调用“拨号”动作
  • category
    • intent.addCategory(“MY_CATEGORY”);
    • 通过addCategory()来添加category,每个Intent对象可设置多个category,可自定义
  • data
    • 更精确地指定该Activity能响应的Intent类型,可设置多个data
    • android:scheme
    • android:host
    • android:mimeType
    • etc.
 
2.3.4 Activity之间传递数据(设Activity A向B传递数据)
  • 通过Intent传递,形式为key-value,如HashMap对象
    • intent.putExtra(“my_key", value);
  • A中将startActivity()更换为startActivityForResult(),并传入requestCode作为A接收到其他Activity返回的数据时的标识(flag)
    • startActivityForResult(intent, requestCode);
  • B中通过取得A传递过来的Intent对象取得数据
    • Intent intent = getIntent();
    • String data = intent.getStringExtra(“my_key");
  • 如果B要返回数据给A,需要添加returnCode
    • Intent intent = new Intent();
    • intent.putExtra(key, value);
    • setResult(RESULT_OK, intent);
    • finish();
  • A在onActivityResult()对B回传的数据进行处理
    • 根据requestCode使用switch语句进行处理
    • 可以根据resultCode进行判断(RESULT_OK/RESULT_CANCEL)
  • B在点击返回键时传递数据
    • 覆写onBackPressed();
    • super.onBackPressed();一定要注释掉或置于最后,否则会在这一步直接返回
 
 
posted @ 2015-09-21 01:39  SCVTheDefect  阅读(210)  评论(0编辑  收藏  举报