Android开发小结Part3:Intent的2个功能

在Android系统中,应用程序一般都有多个Activity,Intent可以实现以下2个功能:
1.Activity之间的切换
2.Activity之间的数据传递


一.Intent启动Activity代码

Button btnLogin = (Button) findViewById(R.id.btnLogin);
btnLogin.setOnClickListener(new OnClickListener() {
			
    public void onClick(View v) {
		
        //参数1:本Activity的上下文 
        //参数2:目标Activity
        Intent intent = new Intent(LoginActivity.this,StuActivity.class);
        startActivity(intent);
    }
});

二.获取子Acitvity返回值

1.以Sub-Activity的方式启动Activity

Button btn1 = (Button) findViewById(R.id.button1);
btn1.setOnClickListener(new OnClickListener() {
        			
    public void onClick(View v) {
        		
        Intent intent = new Intent(TransferValueActivity.this,TransferValueSubActivity.class);
        //startActivityForResult(Intent,requesCode)
        //参数1:决定启动哪个Activity
        //参数2:请求码,用于区分是哪个子Activity返回
        startActivityForResult(intent, 1);
    }
});  
Button btn2 = (Button) findViewById(R.id.button2);
btn2.setOnClickListener(new OnClickListener() {
           
    public void onClick(View v) {
          
          Intent intent = new Inten(TransferValueActivity.this,TransferValueSub2Activity.class);
          startActivityForResult(intent, 2);
    }
}); 
Button btn3 = (Button) findViewById(R.id.button3);
btn3.setOnClickListener(new OnClickListener() {
           
         public void onClick(View v) {
          
          Intent intent = new Inten(TransferValueActivity.this,TransferValueSub3Activity.class);
          startActivityForResult(intent, 3);
    }
});     
2.设置子Activity的返回值

(1)以Uri的形式
Button btn1 = (Button) findViewById(R.id.button1);
    btn1.setOnClickListener(new OnClickListener() {
        			
        public void onClick(View v) {
            Uri data = Uri.parse("Activity1返回");
            Intent intent = new Intent(null,data);
            //setResutl(resultCode,Intent)
            //参数1:结果码,表明子Activity的换回状态
            //(RESULT_OK正常返回数据,RESULT_CANCELED取消返回数据)
            //参数2:返回值,通过Intent将数据返回到父Activity
            setResult(RESULT_OK,intent);
            finish();                
    }
});
(2)用Extra集合的形式
Button btn1 = (Button) findViewById(R.id.button1);
    btn1.setOnClickListener(new OnClickListener() {
        			
        public void onClick(View v) {
        		
                Intent intent = new Intent();
                intent.putExtra("name", "Activity");
                intent.putExtra("num", 2);
                intent.putExtra("result", "返回");
                setResult(RESULT_OK,intent);
                finish();       
    }
});
(3)使用Bundle类
Button btn1 = (Button) findViewById(R.id.button1);
btn1.setOnClickListener(new OnClickListener() {
        			
        	public void onClick(View v) {
        		
                Intent intent = new Intent();
                
                Bundle bundle = new Bundle();
                bundle.putString("name", "Activity");
                bundle.putInt("num", 3);
                bundle.putString("result", "返回");
                intent.putExtras(bundle);
                setResult(RESULT_OK,intent);
                finish();
                
        	}
});

3.在父Activity中获取返回值
//重载onActivityResult方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
				
    super.onActivityResult(requestCode, resultCode, data);
    TextView tv = (TextView) findViewById(R.id.textView2);
    switch(requestCode){
    //请求编码:父Activity发给子Activity,区分哪个子Activity返回
        case 1:
            if(resultCode == Activity.RESULT_OK){
            //结果编码:子Activity发给父Activity,表明返回状态
                Uri uriData = data.getData();
                tv.setText(uriData.toString());
            }
            break;
        case 2:
            if(resultCode == Activity.RESULT_OK){
                String str = data.getStringExtra("name")+data.getIntExtra("num", 0 )+ 
                             data.getStringExtra("result");
                tv.setText(str);
            }
            break;
        case 3:
            if(resultCode == Activity.RESULT_OK){
                Bundle bundle = data.getExtras();
                String str = bundle.getString("name") + bundle.getInt("num") + 
                             bundle.getString("result");
                tv.setText(str);
            }
            break;
    }
} 
    


转载于:https://my.oschina.net/laiwanshan/blog/99425

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值