Android中的请求码

来源:互联网 发布:c语言字符串 编辑:程序博客网 时间:2024/06/05 06:06
在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);    }@Overridepublic 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;}}@Overrideprotected 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;@Overrideprotected 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);}@Overridepublic 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 {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_receive);findViewById(R.id.receive_btn).setOnClickListener(this);}@Overridepublic 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();}}



0 0
原创粉丝点击