我正在开发一个简单的游戏,我有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
}
}
最佳答案
首先尝试将数据(单词)与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();
}
}
希望对您有帮助!
关于java - 在其他 Activity 中调用类并更改其变量之一,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51507231/