Edittext не обновляется во фрагменте и берется только предыдущее значение - PullRequest
0 голосов
/ 13 июля 2020

Я пытался решить проблему со своими списками, кажется, десять часов. В настоящее время я программирую приложение quizapp и у меня есть MainActivity с gettern и settern, а затем у меня загружаются фрагменты.

Fragment1 fragment1 = new Fragment1();
        getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.linear_fragment_1, fragment1, "findThisFragment").addToBackStack(null).commit();

Затем загружается список ставок из получателя MainActivity. Это было определено в начале, например, список для 3 игроков, каждый из которых получает ставку 5, тогда список будет [5,5,5].

Первый игрок вводит свою ставку, и ArrayList (listBet) обновлено. Вот код для получения списка из метода получения в MainActivity.

private int playerNumber = 0;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.quiz_fragment, container, false);
}

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    //initViews

(...)
private MainActivity getterMain = (MainActivity) getActivity();
private ArrayList<Integer> listBet = getterMain.getLisBet();

(...)
//initListener
    btnNext.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
          final int bet = Integer.parseInt(editTextBet.getText().toString());
          //I'm using .set because I want to update the value at the position
          listBet.set(0, bet);
          //Edittext clear field
          editTextBet.getText().clear();
          //method for the next player
          nextPlayer(playernumber);
          }
    }
}

, который тоже неплохо работает, но теперь очередь за игроком. Код:

private void nextPlayer(int playerNumbers) {
//again. The field should be cleared
editTextBet.getText().clear();

//increase the actual playerNumber
playerNumbers++;

btnNext.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
                      (...)
                    int betNew = Integer.parseInt(editTextBet.getText().toString());
                    //setting the list at the new position with new value
                    listBet.set(playerNumbers, betNew);
                    
                    //call the same method again
                    nextPlayer(playerNumbers);
                    //edittext should be cleared again
                    editTextBet.getText().clear();
                      (…)
                      }

независимо от того, что он вводит, он всегда получает значение первого игрока, а третий игрок получает значение второго.

Например. Player1 вводит 3, player2 2, player3 4

Список должен выглядеть так: [3,2,4] но он выглядит так [3,3,2].

Почему это происходит ? Я действительно в отчаянии и, вероятно, слишком долго сидел в нем, чтобы увидеть проблему.

если вам что-то еще нужно, просто дайте нам знать. заранее спасибо!

...