Как сделать табло, где результаты рассчитываются в другой деятельности? - PullRequest
0 голосов
/ 02 июня 2019

Я делаю приложение для местной карточной игры для трех игроков, где есть два вида деятельности.Один, который является своего рода калькулятором, который вычисляет результаты, и второй, где упомянутые результаты должны быть отображены.Однако, поскольку я не являюсь экспертом в Java и программировании в целом, он не работает.

В моем приложении сейчас происходит то, что результат первого игрока (в моем случае Тома) берется из калькулятора.активность и отображается в первом textView и имя игрока первого.Но когда я повторяю эту операцию, намереваясь отобразить второй результат во втором textView, он просто перезаписывает первый textView.Я уже пробовал следующее:

  1. с использованием startActivity
  2. с использованием startActivityForResult
  3. , завершив действие калькулятора (называемое MainActivity) с finish()
  4. с использованием Bundle вместо Intent, но ничего из этого не сработало.

В операции калькулятора (называемой MainActivity):

final Button zapsat = (Button)findViewById(R.id.button3);
        zapsat.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                final TextView tomVysledek = (TextView)findViewById(R.id.textView_tom2);
                //final TextView tataVysledek = (TextView)findViewById(R.id.textView_tom3);
                //final TextView kubaVysledek = (TextView)findViewById(R.id.textView_tom4);

                Intent intent = new Intent(MainActivity.this, Results.class);
                intent.putExtra("tomVysledek", tomVysledek.getText().toString());
                startActivity(intent);

            }
        });

InonCreate действия Результаты (где я хочу отобразить результаты):

TextView textView_tomV1 = (TextView) findViewById(R.id.textView_tomV1);
TextView textView_tomV2 = (TextView) findViewById(R.id.textView_tomV2);
.
.
.
TextView textView_tomV5 = (TextView) findViewById(R.id.textView_tomV5);

int tomZapis = 0;
        Intent intent = getIntent();
        try {
            tomZapis = Integer.parseInt(intent.getStringExtra("tomVysledek"));

        } catch (Exception e){}
        String tomZapis_tv = Integer.toString(tomZapis);

        if (textView_tomV1.getText().equals("0")) {
            textView_tomV1.setText(tomZapis_tv);
        } else if (textView_tomV2.getText().equals("0")){
            textView_tomV2.setText(tomZapis_tv);
        } else if (textView_tomV3.getText().equals("0")){
            textView_tomV3.setText(tomZapis_tv);
        } else if (textView_tomV4.getText().equals("0")) {
            textView_tomV4.setText(tomZapis_tv);
        } else if (textView_tomV5.getText().equals("0")) {
            textView_tomV5.setText(tomZapis_tv);
        } else {
            Toast.makeText(Results.this, "Už není místo :(", Toast.LENGTH_LONG).show();
        }
        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intentres = new Intent(Results.this, MainActivity.class);
                startActivityForResult(intentres, 1);
            }
        });

Как я уже сказал, он всегда отображает результат в первом textView (textView_tomV1), а не находитпервый пустой textView и заполнение его переменной.Я полагаю, что это потому, что startActivity фактически возобновляет действие, но я не уверен в этом, и даже если бы это было так, я бы тоже не знал, что с ним делать.

1 Ответ

0 голосов
/ 02 июня 2019

Я не уверен, решит ли это вашу проблему, но когда вы пишете это

        else if (textView_tomV2.getText().equals("0"))

вы сравниваете "Editable" со строкой ... Вы должны добавить toString () примерно так

textView_tomV2.getText().toString().equals("0")

и он будет сравнивать строки

...