2017-08-05 5 views
0

私はボードゲームのモバイル版を作成しようとしています。何らかの理由で新しい要素が追加されたときに、すべての要素が最後の要素に適合するArrayListがあります。理由を理解していない。以下は (私は、Android Studioにはかなり新しいです)最後の要素のコピーで構成されたArraylist

リストに追加すると懸念しているすべてのクラスです:

public class ScoreBoard { 
    private static final ScoreBoard ourInstance = new ScoreBoard(); 

    public static ScoreBoard getInstance() { 
     return ourInstance; 
    } 

    List<Player> Players; 
    int nrOfPlayers; 
    int activePlayer; 

    private ScoreBoard() { 
     Players = new ArrayList<Player>(); 
    } 

    public void addPlayer(CharSequence name) { 
     Player p = new Player(name); 
     Players.add(p); 
    } 

    public void nrOfPlayers(int number) 
    { 
     nrOfPlayers = number; 
    } 

    public boolean stop() 
    { 
     boolean stop = false; 

     if (nrOfPlayers <= Players.size()) 
     { 
      stop = true; 
     } 
     return stop; 
    } 

    public void StartGame() 
    { 
     Random random = new Random(); 
     random.nextInt(nrOfPlayers); 
    } 

    public CharSequence GetActivePlayerName() 
    { 
     return Players.get(activePlayer).name; 
    } 
} 

public class Player { 
    public CharSequence name; 
    public int points; 

    public Player(CharSequence name) 
    { 
     this.name = name; 
    } 
} 

public class PlayerName extends AppCompatActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_player_name); 
    } 

    public void addPlayer(View view) 
    { 
     ScoreBoard SB = ScoreBoard.getInstance(); 
     TextView nameText = (TextView)findViewById(R.id.NameText); 
     TextView playerText = (TextView)findViewById(R.id.PlayerText); 
     CharSequence name = nameText.getText(); 
     SB.addPlayer(name); 
     playerText.setText("Player " + (SB.Players.size() + 1) + " enter your name"); 
     Context context = getApplicationContext(); 
     int duration = Toast.LENGTH_SHORT; 

     Toast toast = Toast.makeText(context, name + " Added", duration); 
     toast.show(); 

     if(SB.stop()) 
     { 
      SB.StartGame(); 
      Intent intent = new Intent(this, TakeTurn.class); 
      startActivity(intent); 
     } 
     else 
     { 

     } 
    } 
} 
+0

最後の要素にはどういう意味ですか? –

+0

すべての要素が最後に追加された要素の複製になります(よりよいと言わなければならないでしょう) – Calmaty

+0

「ねえ、あなたは新しいですね」答えが問題を解決したと感じる場合は、 –

答えて

0

初期化中にあなたがstaticfinalを使用しました。それらを削除して、Scorecardクラスを次のように変更します。

private ScoreBoard ourInstance = new ScoreBoard(); 

    public ScoreBoard getInstance() { 
     return ourInstance; 
    } 
+0

それが問題を解決するかどうかはわかりません(それに対応するために私のコードにいくつかの変更を加えなければなりません)。もしそうならば – Calmaty

+0

クラスコンストラクタをprivateとして宣言すると、シングルトンクラスを持つことができますが、それについては完全にはわかりません。これはシングルトンクラスのみになります。ここを参照してください:http://www.java2novice.com/java_constructor_examples/singleton/ –

関連する問題