Android中的请求码

在Android中,当Activity之间相互跳转时,可以使用意图(Intent)来传递相应的数据。
新的Activity与原来Activity不在同一个进程中,原来Activity带着请求码跳到一个新的Activity界面,可以使用startActivityForResult(Intent intent, int requestCode)。当新的Activity关闭时,会触发原来Activity的onActivityResult事件。
onActivityResult(int requestCode, int resultCode, Intent data)
requestCode: 通过这个参数可以判断是从哪个界面回来的
resultCode、data:被关闭的那个界面传递回来的数据

当我们关闭新的Activity时,会触发主Acvitity的onActivityResult方法,那么由于原Activity发送了一个请求码,这时候就可以根据请求码判断是从哪个界面回来的了。

新界面:

setResult(int resultCode):设置传递到上一个界面的数据

setResult(int resultCode, Intent data):设置传递到上一个界面的数据从新Activity回到原Activity时也可以设置一些结果码信息。

案例:

在原来的界面设置两个按钮,分别用于获取支付方式和配送地址

原来的界面:

public class MainActivity extends Activity implements OnClickListener {

	private TextView mPayTv;
	private TextView mReceiveTv;
	private static final int PAY_REQ = 0x001;
	private static final int RECEIVE_REQ = 0x002;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.pay_btn).setOnClickListener(this);
        findViewById(R.id.receive_btn).setOnClickListener(this);
        mPayTv = (TextView) findViewById(R.id.pay_tv);
        mReceiveTv = (TextView) findViewById(R.id.receive_tv);
    }

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.pay_btn:
			Intent intent = new Intent(this,PayActivity.class);
			startActivityForResult(intent, PAY_REQ);
			break;

		case R.id.receive_btn:
			Intent receiveIntent = new Intent(this,ReceiveActivity.class);
			startActivityForResult(receiveIntent, RECEIVE_REQ);
			break;
		}
	}
	
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		//String payResult = data.getStringExtra("payResult");
		//mPayTv.setText(payResult);
		//String receiveResult = data.getStringExtra("receiveResult");
		//mReceiveTv.setText(receiveResult);
		if(requestCode == PAY_REQ){
			String payResult = data.getStringExtra("payResult");
			mPayTv.setText(payResult);
		}else if(requestCode == RECEIVE_REQ){
			String receiveResult = data.getStringExtra("receiveResult");
			mReceiveTv.setText(receiveResult);
		}
	}

    
}
支付界面:

public class PayActivity extends Activity implements OnClickListener {

	private Button mWchatBtn;
	private Button mAlipyBtn;
	private Button mUnionPayBtn;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_pay);
		mWchatBtn = (Button) findViewById(R.id.wchat_btn);
		mAlipyBtn = (Button) findViewById(R.id.alipay_btn);
		mUnionPayBtn = (Button) findViewById(R.id.unionpay_btn);
		mWchatBtn.setOnClickListener(this);
		mAlipyBtn.setOnClickListener(this);
		mUnionPayBtn.setOnClickListener(this);
	}
	
	@Override
	public void onClick(View v) {
		Button btn = (Button)v;
		String result = btn.getText().toString();
		Intent intent = new Intent();
		//intent封装数据
		intent.putExtra("payResult", result);
		setResult(0, intent);
		//杀掉界面(不可少,少了就传不了数据给原来的界面)
		finish();
	}

	

}

配送地址界面:

public class ReceiveActivity extends Activity implements OnClickListener {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_receive);
		findViewById(R.id.receive_btn).setOnClickListener(this);
	}

	@Override
	public void onClick(View v) {
		Button btn = (Button)v;
		String receiveResult = btn.getText().toString();
		Intent intent = new Intent();
		intent.putExtra("receiveResult", receiveResult);
		setResult(0, intent);
		finish();
	}

	

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值