java - 如何删除不同活动中的重复代码?
问题描述
我有一些学习任务。我必须根据选择的单选按钮明确启动活动。例如,我们有两个活动用于选择和主要活动。我们选择一个单选按钮并运行活动。但是这个小活动都是一样的。该任务没有说明如何处理相同的活动。我想知道如何避免这种代码重复。在不改变任务的情况下。
public class DisplayOneActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_one);
TextView textView = findViewById(R.id.textView);
textView.setText(getIntent().getStringExtra(KEY_TEXT));
textView.setTextColor(getIntent().getIntExtra(KEY_COLOR, Color.RED));
if (getIntent().getBooleanExtra(KEY_RANDOM_ALIGN, false)){
Random rnd = new Random(System.currentTimeMillis());
textView.setTextAlignment(TEXT_ALIGN[rnd.nextInt(TEXT_ALIGN.length)]);
}
}
}
public class DisplayTwoActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_one);
TextView textView = findViewById(R.id.textView);
textView.setText(getIntent().getStringExtra(KEY_TEXT));
textView.setTextColor(getIntent().getIntExtra(KEY_COLOR, Color.RED));
if (getIntent().getBooleanExtra(KEY_RANDOM_ALIGN, false)){
Random rnd = new Random(System.currentTimeMillis());
textView.setTextAlignment(TEXT_ALIGN[rnd.nextInt(TEXT_ALIGN.length)]);
}
}
}
解决方案
您可以使用相同的代码创建 BaseActivity,并使用 BaseActivity 扩展 DisplayOneActivity 和 DisplayTwoActivity。
public class BaseDisplayActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_one);
TextView textView = findViewById(R.id.textView);
textView.setText(getIntent().getStringExtra(KEY_TEXT));
textView.setTextColor(getIntent().getIntExtra(KEY_COLOR, Color.RED));
if (getIntent().getBooleanExtra(KEY_RANDOM_ALIGN, false)){
Random rnd = new Random(System.currentTimeMillis());
textView.setTextAlignment(TEXT_ALIGN[rnd.nextInt(TEXT_ALIGN.length)]);
}
}
然后只是扩展另外两个活动。
public class DisplayOneActivity extends BaseDisplayActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
public class DisplayTwoActivity extends BaseDisplayActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
推荐阅读
- sql - 如何阻止我的查询提取重复项?
- ruby-on-rails - 该错误是否表明我在部署到 heroku 时不应该在嵌入式 ruby 中链接方法?
- amazon-quicksight - 是否可以在 AWS Quicksight 上显示 QuestDB 数据?
- java - 图像位平面切片中的计算
- acl - openldap 中 memberOf 的 ACL
- python - 使用 Pyrogram 导入过滤器时遇到问题
- c# - C# VScode 错误?“并非所有代码路径都返回值”不断出现,尽管一切都是正确的
- android - Android改造后数据
- html - 为什么 CSS 没有改变我在 localhost 和 VScode 中的更新(Windows 10)
- php - 按 id 从 cookie 中删除特定项目