gpt4 book ai didi

java - 在其他 Activity 中调用一个类并更改其变量之一

转载 作者:行者123 更新时间:2023-12-02 10:58:46 24 4
gpt4 key购买 nike

我正在开发一个简单的游戏,有 3 个级别。我已经完成了 Activity1 中的 level1。但是由于除了一个变量之外,level2中的代码是相同的,所以我想在activity2(level2)中扩展level1类,但是我的类已经扩展了Activity类,并且在java中没有办法同时继承两个类,所以我决定在 Activity2(level2) 中创建该类的对象并在 onCreate () 中初始化它,但我面临一个问题,我有一个字符串数组变量,其中包含 level1 中的 100 个单词,我想添加另一个100 到该字符串,使其在 level2 中为 200。我怎样才能做到这一点。我不想在 level2 中复制 level 1 的整个代码,然后只更改变量,这是冗余,是一个不好的做法。

这是我的意思的原型(prototype)。

Activity 1,级别 1。在 Activity2 下方,level2

  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( Activity )分开。创建一个类,负责为 Activity 提供数据。

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

(concat方法可参见here)

现在,您不必耦合您的 Activity 。不建议手动实例化 Activity,让 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com