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

如何从另一Activity动态向独立Activity添加带数据的TextView

从一个Activity传递信息到另一个并动态添加TextView展示

我来帮你搞定这个需求!要实现这个功能咱们分两大步骤:在源Activity中传递数据,以及在目标Activity中接收数据并动态创建TextView展示,结合你给出的代码片段,具体实现如下:

第一步:在源Activity中传递输入数据

假设你当前的代码是在一个用于输入数据的Activity(比如叫InputActivity)里,咱们补全OnClick方法,通过Intent把用户输入的内容传递到目标Activity:

public void OnClick(View v) {
    // 获取用户输入的各项数据
    String max_bpm_in = max_bpm.getText().toString();
    String min_bpm_in = min_bpm.getText().toString();
    String avg_speed_in = avg_speed.getText().toString();
    String date_in = date.getText().toString();

    // 创建Intent,指定跳转的目标Activity(这里假设目标Activity叫LogDisplayActivity)
    Intent intent = new Intent(this, LogDisplayActivity.class);
    
    // 用键值对的形式把数据存入Intent
    intent.putExtra("KEY_MAX_BPM", max_bpm_in);
    intent.putExtra("KEY_MIN_BPM", min_bpm_in);
    intent.putExtra("KEY_AVG_SPEED", avg_speed_in);
    intent.putExtra("KEY_DATE", date_in);
    
    // 启动目标Activity
    startActivity(intent);
}

第二步:在目标Activity中接收数据并动态添加TextView

对应你布局activity_log的目标Activity(LogDisplayActivity),咱们在onCreate方法里接收传递过来的数据,然后逐个创建TextView并添加到LinearLayout中:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_log);
    
    // 获取布局中的LinearLayout容器
    LinearLayout mLayout = findViewById(R.id.linear_layout_logbook);

    // 获取传递过来的Intent和数据
    Intent receivedIntent = getIntent();
    String maxBpm = receivedIntent.getStringExtra("KEY_MAX_BPM");
    String minBpm = receivedIntent.getStringExtra("KEY_MIN_BPM");
    String avgSpeed = receivedIntent.getStringExtra("KEY_AVG_SPEED");
    String recordDate = receivedIntent.getStringExtra("KEY_DATE");

    // 动态创建TextView并设置内容、样式,添加到布局中
    // 1. 日期TextView
    TextView dateTextView = new TextView(this);
    dateTextView.setText("记录日期:" + recordDate);
    dateTextView.setTextSize(18);
    dateTextView.setPadding(0, 20, 0, 10); // 设置上下内边距,让排版更舒适
    mLayout.addView(dateTextView);

    // 2. 最大心率TextView
    TextView maxBpmTextView = new TextView(this);
    maxBpmTextView.setText("最大心率:" + maxBpm + " BPM");
    maxBpmTextView.setTextSize(16);
    mLayout.addView(maxBpmTextView);

    // 3. 最小心率TextView
    TextView minBpmTextView = new TextView(this);
    minBpmTextView.setText("最小心率:" + minBpm + " BPM");
    minBpmTextView.setTextSize(16);
    mLayout.addView(minBpmTextView);

    // 4. 平均速度TextView
    TextView avgSpeedTextView = new TextView(this);
    avgSpeedTextView.setText("平均速度:" + avgSpeed);
    avgSpeedTextView.setTextSize(16);
    avgSpeedTextView.setPadding(0, 10, 0, 20);
    mLayout.addView(avgSpeedTextView);
}

一些注意事项

  • 别忘了在AndroidManifest.xml中注册你的目标Activity(LogDisplayActivity),否则启动时会抛出异常。
  • 如果需要传递复杂数据(比如自定义实体类),可以让类实现Parcelable或Serializable接口,再通过Intent传递。
  • 你还可以给动态创建的TextView设置更多样式,比如文字颜色、背景、字体等,让展示效果更美观,例如:
    dateTextView.setTextColor(getResources().getColor(R.color.primary_text));
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:12:56