Java中如何在三个不同方法间传递变量 附安卓场景示例
解决方案
针对你的需求,最简洁通用的实现方式如下:
实现方式1:使用Activity成员变量存储(推荐,实现成本最低)
- 首先在
KuguraActivity类的顶部,和其他成员变量放在一起,声明用于存储手机号的变量:
private String mPayerPhone;
- 修改
pay()方法,拿到手机号后给成员变量赋值:
void pay(){ int amount = 100; String payerName = "Enock", payerPhone = editphonenumber.getText().toString(); // 给成员变量赋值存储 mPayerPhone = payerPhone; Api.flutterwavePayment(KuguraActivity.this,Integer.valueOf(amount), payerName,payerPhone,"Kugura ibicuruzwa"); }
- 直接在
onActivityResult()中读取该成员变量即可:
public void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == RaveConstants.RAVE_REQUEST_CODE && data != null) { String message = data.getStringExtra("response"); if (resultCode == RavePayActivity.RESULT_SUCCESS) { Toast.makeText(this, "SUCCESS " + message, Toast.LENGTH_LONG).show(); // 直接读取存储的手机号 String phoneNumber = mPayerPhone; // 后续写你的业务逻辑即可 } } }
注意事项
如果你的App允许屏幕旋转,或者存在系统主动回收后台Activity的场景,需要额外存储变量避免数据丢失:
重写
onSaveInstanceState方法存储变量:@Override protected void onSaveInstanceState(@NonNull Bundle outState) { super.onSaveInstanceState(outState); outState.putString("payer_phone", mPayerPhone); }在
onCreate方法中恢复变量:@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (savedInstanceState != null) { mPayerPhone = savedInstanceState.getString("payer_phone"); } }
内容的提问来源于stack exchange,提问作者Meston Enock
相关产品推荐
相关产品推荐

