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

Android如何将Activity A的按钮文本传递到Activity B并显示在TextView中

实现方案

核心思路是通过Intent携带参数在Activity间传递数据,具体实现步骤如下:

1. 修改SmActivity(即Activity A)的跳转逻辑

在跳转至BasketActivity(即Activity B)前,把所有按钮当前的文本内容存入Intent的Extra参数中,首先调整按钮的声明位置为类成员变量,否则跳转方法中无法访问按钮实例:

public class SmActivity extends Activity {
    // 将按钮声明为类成员变量
    private Button btn_apple;
    private Button btn_cherry;
    private Button btn_orange;
    private Button btn_waterLemon;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sm);
        // 赋值逻辑保持不变
        btn_apple = (Button) findViewById(R.id.button_apple);
        btn_cherry = (Button) findViewById(R.id.button_cherry);
        btn_orange = (Button) findViewById(R.id.button_orange);
        btn_waterLemon = (Button) findViewById(R.id.button_waterlemon);

        // 原有点击监听逻辑保持不变
        ...
    }

再修改跳转方法OnClickBsk,把按钮文本存入Intent:

public void OnClickBsk(View view){
    Intent intent = new Intent(SmActivity.this, BasketActivity.class);
    // 存入四个按钮的当前计数文本
    intent.putExtra("apple_count", btn_apple.getText().toString());
    intent.putExtra("cherry_count", btn_cherry.getText().toString());
    intent.putExtra("orange_count", btn_orange.getText().toString());
    intent.putExtra("waterlemon_count", btn_waterLemon.getText().toString());
    startActivity(intent);
}

2. 修改BasketActivity(即Activity B)的逻辑

在onCreate方法中接收传递的参数,给对应TextView设置文本并切换为可见状态:

public class BasketActivity extends Activity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_basket);
        // 替换为你布局中实际的TextView ID
        TextView tvApple = findViewById(R.id.tv_apple);
        TextView tvCherry = findViewById(R.id.tv_cherry);
        TextView tvOrange = findViewById(R.id.tv_orange);
        TextView tvWaterlemon = findViewById(R.id.tv_waterlemon);

        // 接收参数
        Intent intent = getIntent();
        String appleCount = intent.getStringExtra("apple_count");
        String cherryCount = intent.getStringExtra("cherry_count");
        String orangeCount = intent.getStringExtra("orange_count");
        String waterlemonCount = intent.getStringExtra("waterlemon_count");

        // 设置文本并设为可见
        if (appleCount != null) {
            tvApple.setText(appleCount);
            tvApple.setVisibility(View.VISIBLE);
        }
        if (cherryCount != null) {
            tvCherry.setText(cherryCount);
            tvCherry.setVisibility(View.VISIBLE);
        }
        if (orangeCount != null) {
            tvOrange.setText(orangeCount);
            tvOrange.setVisibility(View.VISIBLE);
        }
        if (waterlemonCount != null) {
            tvWaterlemon.setText(waterlemonCount);
            tvWaterlemon.setVisibility(View.VISIBLE);
        }
    }
}

可选优化:简化SmActivity的重复点击监听

你现有代码写了四个逻辑完全一致的点击监听器,冗余度很高,可以封装为通用方法减少重复代码:

// 通用计数点击监听器
private View.OnClickListener getCountListener(Button btn) {
    return new View.OnClickListener() {
        boolean action = false;
        @Override
        public void onClick(View v) {
            if (!action) {
                action = true;
                btn.setText("1");
            } else {
                int count = Integer.parseInt(btn.getText().toString());
                btn.setText(String.valueOf(count + 1));
            }
        }
    };
}

设置监听时直接调用即可:

btn_apple.setOnClickListener(getCountListener(btn_apple));
btn_cherry.setOnClickListener(getCountListener(btn_cherry));
btn_orange.setOnClickListener(getCountListener(btn_orange));
btn_waterLemon.setOnClickListener(getCountListener(btn_waterLemon));

内容的提问来源于stack exchange,提问作者SikroN

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:45:02