我正在开发一个简单的游戏,我有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/

10-09 19:36