Java 如何删除不同活动中的重复代码?
我在学习中有一些任务。我必须根据选择的单选按钮明确启动活动。例如,我们有两个可供选择的活动和主活动。我们选择一个单选按钮并运行活动。但这些小活动是一样的。任务没有说明如何处理相同的活动。我想知道如何避免这种代码重复。不改变任务Java 如何删除不同活动中的重复代码?,java,android,android-intent,android-activity,Java,Android,Android Intent,Android Activity,我在学习中有一些任务。我必须根据选择的单选按钮明确启动活动。例如,我们有两个可供选择的活动和主活动。我们选择一个单选按钮并运行活动。但这些小活动是一样的。任务没有说明如何处理相同的活动。我想知道如何避免这种代码重复。不改变任务 public class DisplayOneActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.on
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);
}
}
您可以创建基本活动CALS并从此基本活动扩展活动 例如,您创建了以下基类:
public class BaseActivity extends AppCompatActivity { }
还有你们班:
public class DisplayOneActivity extends BaseActivity {}
public class DisplayTwoActivity extends BaseActivity {}
现在,您可以在基本活动中放置通用代码和方法,并在所有子活动中使用。我删除了其中一个类。添加了
switch case
,选择layout.xml
根据单选按钮。参考您各自的IDE以获得重构下的工具或这些行中的其他工具;对于Intellij,您可以实现抽象BaseActivity,并从中扩展其他活动。例子: