我正在开发一个简单的游戏,我有3个等级。我已经完成了activity1中的level1。但是由于代码在level2中除了一个变量之外都是相同的,所以我想在activity2(level2)中扩展level1类,但是我的类已经在扩展Activity类,并且在Java中没有办法同时继承两个类,所以我决定在activity2(level2)中创建该类的对象,并在onCreate()中对其进行初始化,但是我面临的一个问题是,我在level1中有一个包含100个单词的字符串数组变量,我想添加另一个100到该字符串以使其在level2中变为200。我怎样才能做到这一点。我不想在level2中复制整个级别1的代码,之后只更改变量,这是多余的,这是一种不好的做法。
这是我的意思的原型。
活动1,级别1。在Activity2下方,leve2
public class Level1 extends Activity {
String words[ ] = {ball, game, food, bike, ...... ..}
//100 words
protected void on create(Bundle b){
super.onCreate(b);
setContentView(R.layout. level1)
}
}
public class level2 extends Activity{
Level1 level;
protected void onCreate (Bundle b){
super.onCreate(b);
setContentView(R.layout.level2);
level = new Level1();
//how can l add 100 more word in the string arrived
here
}
}
答案 0 :(得分:1)
尝试首先从UI(活动)中分离数据(单词)。创建一个负责为活动提供数据的类。
public class WordsProvider {
private String wordsForLevel1[] = {ball, game, food, bike, ...... ..};
private String wordsForLevel2[] = {words, you, want, to, add, to, first, array};
public String[] getWordsForLevel1() {
return wordsForLevel1;
}
public String[] getWordsForLevel2() {
return concat(wordsForLevel1, wordsForLevel2);
}
}
(可以在here中找到concat方法)
现在,您不必进行活动配对。不建议手动实例化一个活动,让Android系统来完成。因此您的代码将如下所示:
public class Level1 extends Activity {
String words[];
protected void on create(Bundle b) {
super.onCreate(b);
setContentView(R.layout.level1)
words = new WordsProvider().getWordsForLevel1();
}
}
public class Level2 extends Activity {
String words[];
protected void onCreate (Bundle b) {
super.onCreate(b);
setContentView(R.layout.level2);
words = new WordsProvider().getWordsForLevel2();
}
}
希望对您有帮助!