我正在尝试让用户在StartScreen活动的textEdits中键入什么,以使其显示在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"));

最佳答案

不幸的是,如果不扩展Activity类,意图将无法在Android中工作。

因此,您可以做的是在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字段。我相信这应该可以回答您的问题并为您提供帮助。

如果不是,则对以下问题发表评论。

10-07 13:26