textview通过intent
时间: 2023-08-11 20:17:23 浏览: 48
Textview是一个视图控件,用于显示文本内容,它本身并不能通过Intent传递。如果你需要在两个Activity之间传递文本内容,你可以将文本内容保存在Intent的Extra中,然后在接收Intent的Activity中获取Extra中的文本内容,然后将其设置到目标TextView中显示。
以下是一个简单的示例代码:
在发送Intent的Activity中:
```
String text = "Hello World!";
Intent intent = new Intent(this, ReceivingActivity.class);
intent.putExtra("text", text);
startActivity(intent);
```
在接收Intent的Activity中:
```
String text = getIntent().getStringExtra("text");
TextView textView = findViewById(R.id.text_view);
textView.setText(text);
```
在接收Intent的Activity的布局文件中,需要包含一个id为text_view的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 可以使代码更加简洁易读。