Создавать объект при нажатии кнопки и использовать увеличенное имя для ссылочной переменной?(андроид студия, Java) - PullRequest
0 голосов
/ 12 декабря 2018

Чтобы научиться создавать приложения на Java и Android, я создаю приложение, в котором будут храниться результаты игроков (например, для настоящей карточной игры).Таким образом, количество игроков не фиксировано.

Сначала я создал класс «Player», содержащий идентификатор, имя и счет.

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

Затем я бы хотелсоздавать нового игрока каждый раз, когда я нажимаю кнопку в пользовательском интерфейсе.Вот моя кнопка, которая вызывает метод «newPlayer» при нажатии:

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

Вот метод «newPlayer», вызываемый при каждом нажатии кнопки.Но этот метод не работает.Этот метод должен создать экземпляр объекта player и увеличить имя ссылочной переменной в соответствии с переменной «nbrPlayer».

Эта переменная подсчитывает количество игроков:

public int nbrPlayer = 1;

И этоМетод newPlayer:

private void newPlayer(){

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

nbrPlayer ++;

}

Спасибо за вашу помощь.(В конце концов я ищу хороший учебник для этого, но пока не нашел).

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Каждый раз, когда новый игрок нажимает кнопку, вы должны создавать экземпляр игрока, передавая идентификатор, имя и счет.Например:

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

}
0 голосов
/ 12 декабря 2018

в вашей активности, где у вас есть кнопка, у вас должен быть счетчик, ваш код будет выглядеть следующим образом:

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, так как вы не возвращаете игрока, поэтому онумрет после создания.

Ваш вопрос не ясен, где вы вообще собираетесь показывать этих игроков.так что даже в моем решении плеер создается нажатием кнопки, но с ним ничего не происходит ...

Вы должны добавить его в список или установить или показать где-нибудь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...