Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何删除不同活动中的重复代码?_Java_Android_Android Intent_Android Activity - Fatal编程技术网

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,并从中扩展其他活动。例子: