首页 > 解决方案 > 如何删除不同活动中的重复代码?

问题描述

我有一些学习任务。我必须根据选择的单选按钮明确启动活动。例如,我们有两个活动用于选择和主要活动。我们选择一个单选按钮并运行活动。但是这个小活动都是一样的。该任务没有说明如何处理相同的活动。我想知道如何避免这种代码重复。在不改变任务的情况下。

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)]);
    }

}
}

标签: javaandroidandroid-intentandroid-activity

解决方案


您可以使用相同的代码创建 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);
}
}

推荐阅读