如何在不同的活动中删除重复的代码?

时间:2019-10-12 09:20:10

标签: java android android-intent android-activity

我的学习有一些任务。我必须根据选择的单选按钮显式启动活动。例如,我们有两个选择活动和主要活动。我们选择一个单选按钮并运行活动。但是这种次要活动是相同的。该任务没有说明如何处理相同的活动。我想知道如何避免这种代码重复。无需更改任务。

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

}
}

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您可以创建baseActivity calss并从该基本活动中扩展您的活动。

例如,您已创建此基类:

public class BaseActivity extends AppCompatActivity { }

和您的课程:

public class DisplayOneActivity extends BaseActivity {}
public class DisplayTwoActivity extends BaseActivity {}

现在您可以在基本活动中添加通用代码和方法,并在所有子活动中使用。

答案 2 :(得分:0)

我删除了其中一门课。添加了switch-case,可根据单选按钮选择layout.xml