在单击按钮时实例化一个对象并使用增量名称作为参考变量? (android 工作室,java)

Instanciate an object on button click and use incremented name for reference variable ? (android studio, java)

为了学习 java 和 android 应用程序构建,我正在创建一个应用程序来存储玩家的分数(例如,对于真正的纸牌游戏)。所以玩家人数不固定

首先,我创建了一个class“Player”,其中包含一个id、一个名字和一个分数。

public class Player {
    int idj;
    String namej;
    int scorej;

    public Player(int idj, String namej, int scorej) {
        this.idj = idj;
        this.namej = namej;
        this.scorej = scorej;
    }

    public int getIdj() {
        return idj;
    }

    public void setIdj(int idj) {
        this.idj = idj;
    }

    public String getNamej() {
        return namej;
    }

    public void setNamej(String namej) {
        this.namej = namej;
    }

    public int getScorej() {
        return scorej;
    }

    public void setScorej(int scorej) {
        this.scorej = scorej;
    }
}

然后我想在每次单击 UI 上的按钮时创建一个新播放器。这是我的按钮,它在单击时调用“newPlayer”方法:

Button bT1 = (Button) findViewById(R.id.bT1);
bT1.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        newPlayer();
    }
});

这里是每次点击按钮调用的“newPlayer”方法。但是这个方法行不通。此方法必须实例化播放器对象并根据“nbrPlayer”变量递增引用变量名称。

这个变量正在计算玩家数量:

public int nbrPlayer = 1;

这是 "newPlayer" 方法:

private void newPlayer(){

player(nbrPlayer) = new Player(nbrPlayer,"var1FromEditText"," var2FromEditText ");

nbrPlayer ++;

}

感谢您的帮助。 (我最终正在寻找一个很好的教程,但现在我没有找到)。

在你有按钮的活动中你必须有一个计数器 你的代码将是这样的:

int counter = 1;
Button bT1 = (Button) findViewById(R.id.bT1);
bT1.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        new Player(counter++,"var1FromEditText"," var2FromEditText ");
    }
});

没有理由使用 newPlayer 方法,因为您不会返回播放器,所以它会在创建后消失。

你的问题根本不清楚你打算在哪里展示这些球员。所以即使在我的解决方案中,播放器是在单击按钮时创建的,但没有任何反应......

您必须将其添加到列表或在某处设置或显示

每次当新玩家点击按钮时,您应该通过传递 id、名称和分数来创建玩家实例。像这样

Player newPlayer = new Player(nbrPlayer,"playerName",0);

但是在您的代码中您没有存储 nbrPlayer 值,因此您无法在该实例死机时检索该值。所以你应该将它存储在任何存储中以取回它。我使用共享偏好来存储该值。检查我的代码

private void newPlayer(){
    SharedPreferences prefs = this.getSharedPreferences(
            "MY_DATA", Context.MODE_PRIVATE);
    int nbrPlayer = prefs.getInt("idj", 0);
    if(nbrPlayer==0){
        nbrPlayer = 1;
    }
    Player newPlayer = new Player(nbrPlayer,"playerName",0);
    nbrPlayer ++;
    SharedPreferences.Editor editor = getSharedPreferences("MY_DATA", MODE_PRIVATE).edit();
    editor.putInt("idj", nbrPlayer);
    editor.apply();
    Log.d(TAG,"Player:"+nbrPlayer);

}