You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 00:06:03