textview通过intent
时间: 2023-08-11 15:10:37 浏览: 46
TextView 是 Android 开发中的一个 UI 控件,用于显示文本内容。如果您想通过 Intent 在不同的 Activity 之间传递 TextView 的内容,可以使用 Intent 的 putExtra() 方法将 TextView 的内容传递到目标 Activity 中。
以下是一个示例代码:
在源 Activity 中:
```java
TextView textView = findViewById(R.id.textView);
String text = textView.getText().toString();
Intent intent = new Intent(this, TargetActivity.class);
intent.putExtra("text", text);
startActivity(intent);
```
在目标 Activity 中:
```java
TextView textView = findViewById(R.id.textView);
String text = getIntent().getStringExtra("text");
textView.setText(text);
```
这里使用了 putExtra() 方法在 Intent 中添加了一个名为 "text" 的字符串类型的额外数据,在目标 Activity 中使用 getIntent().getStringExtra() 方法获取传递过来的内容,并将其设置到 TextView 中显示出来。
相关问题
activity之间通过intent传递控件id
不建议通过intent传递控件id,因为控件id是在布局文件中定义的,而不是在代码中动态生成的,因此在不同的activity中可能会出现id冲突的问题。此外,控件id也不应该被视为传递数据的一种方式。
如果需要在不同的activity之间传递数据,可以使用intent的putExtra()方法来传递数据,例如:
在发送activity中:
```
Intent intent = new Intent(this, ReceiveActivity.class);
intent.putExtra("data", "Hello World");
startActivity(intent);
```
在接收activity中:
```
String data = getIntent().getStringExtra("data");
textView.setText(data);
```
这样可以将数据通过intent传递到接收activity中,并在接收activity中使用。
优化代码public class SecondActivity extends AppCompatActivity { private TextView textView9, textView11, textView13, textView15, textView17, textView19; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); Intent intent = getIntent(); String num = intent.getStringExtra("num"); String name = intent.getStringExtra("name"); String score1 = intent.getStringExtra("score1"); String score2 = intent.getStringExtra("score2"); String score3 = intent.getStringExtra("score3"); double average = intent.getDoubleExtra("average", 0); textView9 = findViewById(R.id.textView9); textView11 = findViewById(R.id.textView11); textView13 = findViewById(R.id.textView13); textView15 = findViewById(R.id.textView15); textView17 = findViewById(R.id.textView17); textView19 = findViewById(R.id.textView19); textView9.setText(num); textView11.setText(name); textView13.setText(score1); textView15.setText(score2); textView17.setText(score3); textView19.setText(String.format("%.2f", average)); } }
这段代码已经非常简洁,不过还可以进一步优化:
1. 将 findViewById() 方法的调用放在 onStart() 方法中,避免在 onCreate() 方法中执行过多的操作;
2. 使用 ButterKnife 或者 ViewBinding 来代替 findViewById() 方法,可以进一步简化代码。
下面是使用 ButterKnife 优化后的代码:
```
public class SecondActivity extends AppCompatActivity {
@BindView(R.id.textView9)
TextView textView9;
@BindView(R.id.textView11)
TextView textView11;
@BindView(R.id.textView13)
TextView textView13;
@BindView(R.id.textView15)
TextView textView15;
@BindView(R.id.textView17)
TextView textView17;
@BindView(R.id.textView19)
TextView textView19;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
ButterKnife.bind(this);
Intent intent = getIntent();
String num = intent.getStringExtra("num");
String name = intent.getStringExtra("name");
String score1 = intent.getStringExtra("score1");
String score2 = intent.getStringExtra("score2");
String score3 = intent.getStringExtra("score3");
double average = intent.getDoubleExtra("average", 0);
textView9.setText(num);
textView11.setText(name);
textView13.setText(score1);
textView15.setText(score2);
textView17.setText(score3);
textView19.setText(String.format("%.2f", average));
}
}
```
使用 ViewBinding 优化后的代码:
```
public class SecondActivity extends AppCompatActivity {
private ActivitySecondBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivitySecondBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
Intent intent = getIntent();
String num = intent.getStringExtra("num");
String name = intent.getStringExtra("name");
String score1 = intent.getStringExtra("score1");
String score2 = intent.getStringExtra("score2");
String score3 = intent.getStringExtra("score3");
double average = intent.getDoubleExtra("average", 0);
binding.textView9.setText(num);
binding.textView11.setText(name);
binding.textView13.setText(score1);
binding.textView15.setText(score2);
binding.textView17.setText(score3);
binding.textView19.setText(String.format("%.2f", average));
}
}
```
使用 ButterKnife 或者 ViewBinding 可以使代码更加简洁易读。