Когда я нажимаю кнопку, мне нужна кнопка, чтобы передать только выбранную строку.

Я пытаюсь передать конкретную строку, если целое число равно 2.

Покажите, что это мое первое занятие под названием PlayerChoose:

    //PI1 and PI2 is Strings from another Activity.
    PI1 = getIntent().getStringExtra("Player1Text");
    PI2 = getIntent().getStringExtra("Player2Text");

    //These bellow are buttons.
    Player1Btn = findViewById(R.id.PlayerToD1);
    Player2Btn = findViewById(R.id.PlayerToD2);

    //These Integers is to set 0 so the app is not broken.
    PlayerInt1 = 0;
    PlayerInt2 = 0;

    //Here im setting text to the buttons so you know what player you pick
    Player1Btn.setText(PI1);
    Player2Btn.setText(PI2);

    //These button adds 1 to the Integer PlayerInt1 so if you hit it 
    //twice it executes what is in the if statement.
    Player1Btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            PlayerInt1++;
            if (PlayerInt1 == 2) {
    Intent TruthOrDare1 = new Intent(PlayerChoose.this,TruthOrDare.class);
                TruthOrDare1.putExtras(getIntent());
                TruthOrDare1.putExtra("Player1Text", PI1);
                startActivity(TruthOrDare1);
            }
        }
    });
    //Same button as Player1Btn Does the same things.
    Player2Btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            PlayerInt2++;
            if (PlayerInt2 == 2) {
    Intent TruthOrDare2 = new Intent(PlayerChoose.this,TruthOrDare.class);
                TruthOrDare2.putExtras(getIntent());
                TruthOrDare2.putExtra("Player2Text", PI2);
                startActivity(TruthOrDare2);
            }
        }
    });

    }
 }

Вот мое второе занятие под названием TruthOrDare:

    //PI1 Should take what i passed with "Player1Text" and save it as a 
    //String
    //PI2 Should take what i passed with "Player2Text" and save it as a 
    //String
    PI1 = getIntent().getStringExtra("Player1Text");
    PI2 = getIntent().getStringExtra("Player2Text");


    //PlayerTurnName1 and PlayerTurnName2 is textviews 
    PlayerTurnName1 = findViewById(R.id.PlayerTurnText1);
    PlayerTurnName2 = findViewById(R.id.PlayerTurnText2);

    //Here i set text to textview whatever have been passes PI1 or PI2
    //Depending
    PlayerTurnName1.setText(PI1);
    PlayerTurnName2.setText(PI2);

Моя проблема заключается в том, что он передает обе строки PI1, PI2 вместо PI1, только если я нажимаю Player1Btn в PlayerChoose Activity и PI2, если я нажимаю Player2Btn. Как я могу передать только PI1, если я нажму Player1Btn, и PI2, если я нажму PI2.

0
triple50 16 Авг 2019 в 17:39

2 ответа

Лучший ответ

Кажется, у вас есть ненужные строки

TruthOrDare1.putExtras(getIntent());
TruthOrDare2.putExtras(getIntent());

В слушателях щелчка, который добавляет и PI1 & PI2

1
Dmitriy Pavlukhin 16 Авг 2019 в 17:15

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

  //So Put PI1 as default string of PIP1.
  PIP1 = PI1;
  //Then in the Buttons OnClickListeners 
  Player1Btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            PlayerInt1++;
            //If you click this button it will set PIP1 to the string you want to 
            //pass in this case PI1
            PIP1 = PI1;
            if (PlayerInt1 == 2) {
          Intent TruthOrDare1 = new Intent(PlayerChoose.this, TruthOrDare.class);
                TruthOrDare1.putExtras(getIntent());
                //Intead of putting the text itself you put PIP1 thats changing 
                //depens on what button you click
                TruthOrDare1.putExtra("PlayerText", PIP1);
                startActivity(TruthOrDare1);
            }
        }
    });
    Player2Btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            PlayerInt2++;
            //And here you Change the same string PIP1 to PI2
            //Here you change the PIP1 to PI2 so PIP1 change to PI2 and not PI1
            PIP1 = PI2;
            if (PlayerInt2 == 2) {
           Intent TruthOrDare2 = new Intent(PlayerChoose.this, TruthOrDare.class);
                TruthOrDare2.putExtras(getIntent());
                TruthOrDare2.putExtra("PlayerText", PIP1);
                startActivity(TruthOrDare2);
            }
        }
    });

Во втором действии под названием TruthOrDare вы меняете это:

    //So you only have 1 String Instead of 2 with 1 key 
    PI1 = getIntent().getStringExtra("PlayerText");


    //One TextView
    PlayerTurnName1 = findViewById(R.id.PlayerTurnText1);



    PlayerTurnName1.setText(PI1); 

Концепция заключается в том, что PIP1 меняется каждый раз, когда вы нажимаете кнопку, поэтому она не передает все значения.

0
triple50 16 Авг 2019 в 17:37