第十一章 Intent原理与使用

================================第十一章 Intent原理与使用===============================

---显式Intent

  使用步骤:

  FirstActivity:

  1.声明一个显式Intent

    Intent intent = new Intent();//无参构造器

    intent.setClass(MainActivity.this, SecondActivity.class);//intent.setClass()方法传入参数

  或者

    Intent intent = new Intent(MainActivity.this, SecondActivity.class);

  2.使用putExtra()方法放入数据//extra 额外的adj

    intent.putExtra("key1", "value1");//extra adj额外的 n附加物

    intent.putExtra("key2", 0x123);

    intent.putExtra("key3", true);

  3.使用startActivity(intent)方法跳转

    FirstActivity.this.startActivity(intent);

 

  SecondActivity:

  1.使用getIntent()获得Intent

    Intent intent = getIntent();

  2.通过key得到value

    String value1 = intent.getStringExtra("key1");

    int value2 = intent.getIntExtra("key2", 0);//getIntExtra(key, 数据缺省值)

    boolean value3 = intent.getBooleanExtra("key3", false);


  FirstActivity代码:

 1   btn.setOnClickListener(new View.OnClickListener()
 2   {
 3     @Override
 4     public void onClick(View v)
 5     {
 6       //
 7       //声明一个显式Intent
 8       //
 9       ntent intent = new Intent();//无参构造器
10       //
11       //intent.setClass()方法传入参数
12       //
13       intent.setClass(MainActivity.this, SecondActivity.class);
14       //
15       //putExtra()传参
16       //
17       intent.putExtra("key1", "value1");//extra adj额外的 n附加物
18       intent.putExtra("key2", 0x123);
19       intent.putExtra("key3", true);
20       //
21       //startActivity(intent)跳转
22       //
23       startActivity(intent);
24       //关闭当前Activity
25       MainActivity.this.finish();
26     }
27   });

 

 

SecondActivity代码:

 

 1 @Override
 2 protected void onCreate(Bundle savedInstanceState)
 3 {
 4   super.onCreate(savedInstanceState);
 5   setContentView(R.layout.activity_second);
 6   //
 7   //接收Intent传入的数据
 8   //
 9   //得到Intent
10   Intent intent = getIntent();
11   //通过key得到value
12   String value1 = intent.getStringExtra("key1");
13   int value2 = intent.getIntExtra("key2", 0);//getIntExtra(key, 数据缺省值)
14   boolean value3 = intent.getBooleanExtra("key3", false);
15 }

 

 

 

 

==========================startActivityForResult(intent, 请求码requestCode)-------有数据回传的跳转:==========================
使用步骤:
FirstActivity:
1.声明一个显式Intent
  Intent intent = new Intent();//无参构造器
  intent.setClass(MainActivity.this, SecondActivity.class);
  //intent.setClass()方法传入参数
或者
  Intent intent = new Intent(MainActivity.this, SecondActivity.class);
2.使用startActivityForResult(intent, 请求码requestCode) 跳转
  MainActivity.this.startActivityForResult(intent, 0x1);
3.重写onActivityResult(int requestCode, int resultCode, Intent data)方法,
  FirstActivity返回栈顶时时,回调onActivityResult()方法获取信息
  判断请求码requestCode与应答码resultCode正确后,通过key得到value
  if(requestCode == 0x1 && resultCode == 0x2)
  {
    String s = data.getStringExtra("key");
    et.setText(s);
    et.requestFocus();//获取焦点
    et.setSelection(0, s.length());//光标选中字符串0-末尾
  }

SecondActivity:
1.获取Intent
  Intent intent = getIntent();
2.使用putExtra()方法放入数据
  intent.putExtra("key", "value");
3.使用setResult(应答码, intent) 方法对FirstActivity应答
  SecondActivity.this.setResult(0x2, intent);
4.关闭SecondActivity,使FirstActivity重新置于栈顶
  SecondActivity.this.finish();


FirstActivity代码:

 1 public class FirstActivity extends Activity
 2 {
 3   EditText et;
 4   Button btn;
 5 
 6   @Override
 7   protected void onCreate(Bundle savedInstanceState)
 8   {
 9     super.onCreate(savedInstanceState);
10     setContentView(R.layout.activity_main);
11 
12     initView();
13   }
14 
15   private void initView()
16   {
17     btn = (Button) findViewById(R.id.btn);
18     et = (EditText) findViewById(R.id.et);
19 
20     btn.setOnClickListener(new View.OnClickListener()
21     {
22       @Override
23       public void onClick(View v)
24       {
25         Intent intent = new Intent();
26         intent.setClass(FirstActivity.this, SecondActivity.class);
27         //
28         //startActivityForResult(intent, 请求码requestCode) 跳转
29         //
30         MainActivity.this.startActivityForResult(intent, 0x1);
31       }
32     });
33   }
34   //
35   //Activity返回栈顶时时,回调onActivityResult()方法获取信息
36   //
37   @Override
38   protected void onActivityResult(int requestCode, int resultCode, Intent data)
39   {
40     super.onActivityResult(requestCode, resultCode, data);
41     if(requestCode == 0x1 && resultCode == 0x2)
42     {
43       String s = data.getStringExtra("name");
44       et.setText(s);
45       et.requestFocus();//获取焦点
46       et.setSelection(0, s.length());//光标选中字符串0-末尾
47     }
48   }
49 }

 

SecondActivity代码:

 1 public class SecondActivity extends Activity
 2 {
 3   Button btn1, btn2, btn3;
 4   @Override
 5   protected void onCreate(Bundle savedInstanceState)
 6   {  
 7     super.onCreate(savedInstanceState);
 8     setContentView(R.layout.activity_second);
 9 
10     initView();
11 }
12 
13   private void initView()
14   {
15     btn1 = (Button) findViewById(R.id.btn1);
16     btn2 = (Button) findViewById(R.id.btn2);
17     btn3 = (Button) findViewById(R.id.btn3);
18     //
19     //取得Intent
20     //
21     final Intent intent = SecondActivity.this.getIntent();
22 
23     View.OnClickListener listener = new View.OnClickListener()
24     {
25       @Override
26       public void onClick(View v)
27       {
28         switch (v.getId())
29         {
30           case R.id.btn1:
31             intent.putExtra("name", "按钮1");
32             break;
33           case R.id.btn2:
34             intent.putExtra("name", "按钮2");
35             break;
36           case R.id.btn3:
37             intent.putExtra("name", "按钮3");
38             break;
39         }
40         //
41         //setResult(应答码, intent) 对FirstActivity应答
42         //
43         SecondActivity.this.setResult(0x2, intent);
44         //关闭当前Activity
45         SecondActivity.this.finish();
46       }
47     };
48     btn1.setOnClickListener(listener);
49     btn2.setOnClickListener(listener);
50     btn3.setOnClickListener(listener);
51   }
52 }

 

 

---隐式Intent
intent-filter 意图过滤器
**注意:可以在不同应用间跳转

      FirstActivity代码:

1 Intent intent = new Intent();
2 intent.setAction("MY_INTENT_ACTIVITY");
3 intent.addCategory("android.intent.category.DEFAULT");
4 intent.addCategory("MY_CATEGORY");
5 MainActivity.this.startActivity(intent);

      SecondActivity代码(AndroidManifest.xml):

1 <activity
2     android:name=".SecondActivity"
3     android:label="@string/title_activity_second" >
4     <intent-filter>
5         <action android:name="MY_INTENT_ACTIVITY"/>
6         <category android:name="android.intent.category.DEFAULT"/>
7         <category android:name="MY_CATEGORY"/>
8     </intent-filter>
9 </activity>

      //category 类型n

 

===============更多隐式Intent=====================
隐式Intent跳转打电话页面:

1 Uri uri = Uri.parse("tel:" + phoneNumber);//parse  vt. 从语法上描述或分析(词句等)
2 Intent intent = new Intent(Intent.ACTION_CALL,uri);
3 startActivity(intent);

  在AndroidManifest.xml中生命打电话权限:

1  <!-- 申明打电话权限-->
2  <uses-permission android:name="android.permission.CALL_PHONE"/>

  //permission  许可,批准 n

 

隐式Intent跳转浏览器网页:

1 Intent intent = new Intent(Intent.ACTION_VIEW);
2 intent.setData(Uri.parse("http://www.baidu.com"));//setData(Uri.parse("...."))
3 startActivity(intent);

  或者:

1 Intent intent = new Intent();
2 intent.setAction(Intent.ACTION_VIEW);//setAction()
3 intent.setData(Uri.parse("http://www.renren.com"));//setData(Uri.parse("...."))
4 startActivity(intent);

 

 

隐式Intent跳转联系人页面:

1 Intent intent = new Intent(Intent.ACTION_DIAL);
2 intent.setData(Uri.parse("tel:" + phoneNumber));
3 startActivity(intent);

 

转载于:https://www.cnblogs.com/starman/p/4986163.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值