我正在尝试让用户在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
字段。我相信这应该可以回答您的问题并为您提供帮助。如果不是,则对以下问题发表评论。