Как отправить намерения в GameView - PullRequest
0 голосов
/ 23 июня 2019

Я пытаюсь получить то, что пользователь вводит в textEdits в StartScreen Activity, чтобы показать в моей MainActivity.

Сначала я создал 2 намерения для 2 пользователей.

String playerOneContent = playerOneEditText.getText().toString();
String playerTwoContent = playerTwoEditText.getText().toString();
Intent intent = new Intent(StartScreen.this, GameView.class);
intent.putExtra("NAME", playerOneContent);
intent.putExtra("NAME2", playerTwoContent);
startActivity(intent);

Тогда в моем GameView у меня есть следующий код:

public class GameView extends View {

Paint paint = new Paint();
Context context;

@Override
public void draw(Canvas canvas) {
    super.draw(canvas);

    paint.setColor(Color.YELLOW);
    canvas.drawPaint(paint);

    paint.setColor(Color.RED);
    paint.setTextSize(20);
    canvas.drawText("NAME",50, 50, paint);
    }
}

Как бы я получил намерения от StartScreen и использовал бы его в GameView?

Это код, который у меня был в моем Main Activity первоначально:

TextView playerOneTextView = (TextView)findViewById(R.id.playerOneTextView);
TextView playerTwoTextView = (TextView) 
findViewById(R.id.playerTwoTextView);

playerOneTextView.setText(getIntent().getStringExtra("NAME"));
playerTwoTextView.setText(getIntent().getStringExtra("NAME2"));

1 Ответ

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

К сожалению, намерения не работают в Android без расширения класса Activity.

Следовательно, вы можете создать объект класса MainActivity в вашем GameView класс и получить значение переменных.

Итак, что-то вроде этого в MainActivity.java:

public String playerOneContent;
public String playerTwoContent;

@Override
public void onCreate...... //blah blah blah

public void functionWhereYouSetValueofStrings(){
    playerOneContent = playerOneEditText.getText().toString();
    playerTwoContent = playerTwoEditText.getText().toString();
}

Теперь в классе GameView.java выполните следующие действия, чтобы получить значения:

MainActivity ma = new MainActivity();
playerOneTextView.setText(ma.playerOneContent);
playerTwoTextView.setText(ma.playerTwoContent);

Он использует объект для ссылки на поля public, которые есть в MainActivity.java.Я считаю, что это должно ответить на ваш вопрос и помочь вам.

Если нет, то просто прокомментируйте проблему ниже.

...