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

如何在已调用Intent的类中再次调用Intent并传递至其他类?

解决Intent数据传递到另一个类的问题

核心问题分析

你之前的报错大概率是两个原因:一是从Intent获取的foodImg等变量是局部变量,在按钮点击的匿名内部类里访问不到;二是创建新Intent时没正确指定上下文(比如误用了匿名类的this)。下面是修正后的完整代码和步骤:

第一步:把Intent数据存为类成员变量

先把从Intent拿到的数据提升为当前Activity的成员变量,这样按钮点击事件里能直接调用:

public class YourActivity extends AppCompatActivity {
    // 定义类成员变量存储Intent数据
    private int foodImg;
    private String foodTitle;
    private String foodPrice;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.your_activity_layout);

        // 从Intent获取数据并赋值给成员变量
        foodImg = getIntent().getIntExtra("Image", 0);
        foodTitle = getIntent().getStringExtra("Title");
        foodPrice = getIntent().getStringExtra("Price");

        // 原有UI赋值逻辑
        mainImg.setImageResource(foodImg);
        name1.setText(foodTitle);
        name2.setText(foodPrice);

        // 按钮点击事件
        addit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // 原有计数逻辑
                name3.setVisibility(View.VISIBLE);
                String cv = name3.getText().toString();
                int val = Integer.parseInt(cv);
                val++;
                name3.setText(String.valueOf(val));

                if(val>=5){
                    addit.setVisibility(View.INVISIBLE);
                } else if(val>=0){
                    minuss.setVisibility(View.VISIBLE);
                }

                // 新增:传递数据到另一个类(以启动另一个Activity为例)
                Intent sendIntent = new Intent(YourActivity.this, TargetActivity.class);
                // 把需要传递的数据放入Intent
                sendIntent.putExtra("Image", foodImg);
                sendIntent.putExtra("Title", foodTitle);
                sendIntent.putExtra("Price", foodPrice);
                // 可选:把当前的计数val也传过去
                sendIntent.putExtra("CurrentCount", val);
                // 启动目标类
                startActivity(sendIntent);
            }
        });
    }
}

第二步:在目标类中接收数据

假设你要传递到TargetActivity,在它的onCreate方法里接收数据:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.target_activity_layout);

    // 接收Intent传来的数据
    int receivedImg = getIntent().getIntExtra("Image", 0);
    String receivedTitle = getIntent().getStringExtra("Title");
    String receivedPrice = getIntent().getStringExtra("Price");
    int receivedCount = getIntent().getIntExtra("CurrentCount", 0);

    // 后续可以用这些数据更新UI或做其他逻辑
}

注意事项

  1. 确保目标Activity已经在AndroidManifest.xml里注册,否则启动会报错
  2. 如果传递的不是Activity而是普通类,可以直接把成员变量作为参数传入类的方法,比如new TargetClass(foodImg, foodTitle),不用Intent

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 09:10:38