textview通过intent
时间: 2023-08-11 16:10:37 浏览: 136
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 中显示出来。
相关问题
优化代码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 可以使代码更加简洁易读。
public class ContactusActivity extends AppCompatActivity implements View.OnClickListener { Button btnSend; private TextView tvPhone; private TextView tvPhon1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_contactus); tvPhone=findViewById(R.id.textView6); tvPhon1=findViewById(R.id.textView12); tvPhone.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG); tvPhon1.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG); setTitle("联系我们"); // btnSend=findViewById(R.id.btnSend); // btnSend.setOnClickListener(this); tvPhone=findViewById(R.id.textView6); tvPhone.setOnClickListener(this); tvPhon1=findViewById(R.id.textView12); tvPhon1.setOnClickListener(this); } @Override public void onClick(View view) { int id =view.getId(); switch (id) { case R.id.textView6: Intent intent=new Intent(Intent.ACTION_DIAL); Uri data=Uri.parse("tel://0574-86891367"); intent.setData(data); //intent.addCategory(Intent.CATEGORY_LAUNCHER); startActivity(intent); break; case R.id.textView12: Uri data1=Uri.parse("https://www.nbpt.edu.cn"); Intent intent1=new Intent(Intent.ACTION_VIEW,data1); startActivity(intent1); break; } } }我应该怎么修改这串代码,以及优化
这段代码的逻辑看起来已经比较清晰了,不过可以进行一些优化和修改:
1. 避免重复的findViewById操作
在onCreate方法中,tvPhone和tvPhon1都进行了findViewById操作,这里可以避免重复代码。可以将其中一个findViewById操作删除,只保留一个即可。
2. 使用常量或字符串资源
在代码中直接使用字符串 "0574-86891367" 和 "https://www.nbpt.edu.cn",不便于管理和维护。可以将这些字符串定义为常量或字符串资源,例如:
```
private static final String PHONE_NUMBER = "0574-86891367";
private static final String WEBSITE_URL = "https://www.nbpt.edu.cn";
```
或者在strings.xml文件中添加如下定义:
```
<string name="phone_number">0574-86891367</string>
<string name="website_url">https://www.nbpt.edu.cn</string>
```
然后在代码中使用getString方法获取字符串资源:
```
String phoneNumber = getString(R.string.phone_number);
String websiteUrl = getString(R.string.website_url);
```
3. 对TextView添加点击事件
在代码中对TextView添加了点击事件,可以使用android:clickable="true"属性来简化代码,例如:
```
<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0574-86891367"
android:textColor="@color/colorAccent"
android:textStyle="bold"
android:textSize="18sp"
android:clickable="true"
android:onClick="onTextViewClick" />
```
然后在Activity中添加一个onTextViewClick方法:
```
public void onTextViewClick(View view) {
int id = view.getId();
switch (id) {
case R.id.textView6:
Intent intent = new Intent(Intent.ACTION_DIAL);
Uri data = Uri.parse("tel://" + getString(R.string.phone_number));
intent.setData(data);
startActivity(intent);
break;
case R.id.textView12:
Uri data1 = Uri.parse(getString(R.string.website_url));
Intent intent1 = new Intent(Intent.ACTION_VIEW, data1);
startActivity(intent1);
break;
}
}
```
这样就可以避免在Activity中重复编写onClick方法了。
4. 添加注释
在代码中添加注释可以方便自己和其他人理解代码的逻辑和作用,建议添加一些必要的注释。例如:
```
// 设置标题栏名称
setTitle("联系我们");
// 对TextView添加下划线效果
tvPhone.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
tvPhon1.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
// 对TextView添加点击事件
tvPhone.setOnClickListener(this);
tvPhon1.setOnClickListener(this);
// 处理TextView的点击事件
public void onTextViewClick(View view) {
// ...
}
```
以上是一些可能的优化和修改建议,需要根据实际情况进行具体操作。
阅读全文