【问题标题】:How to send intents into gameView如何将意图发送到游戏视图
【发布时间】:2019-06-23 00:01:55
【问题描述】:

我试图让用户在 StartScreen Activity 的 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"));

【问题讨论】:

  • 您好 user11686570,欢迎来到 StackOverflow。请问,你的问题到底是什么?看起来您已经从StartScreengetIntent() 获得了意图,那么您是否遇到了某些问题或一些意外行为?如果是这样,您能否发布错误或预期行为和结果行为的图像或日志?
  • 是的,如果我使用 GameView,我认为 MainActivity 中的任何内容都不会出现错误。所以我尝试在 GameView 中使用 getIntent,但它不允许我这样做,因为 GameView 不是一个活动,只是一个延伸到 MainActivity 的类。另外,在我有setText的MainActivity中,你不能对GameView这样做,这就是我使用canvas的原因。
  • 我认为您可能需要做的是为GameView 创建一个构造函数,然后传入context

标签: java android android-fragments android-intent


【解决方案1】:

很遗憾,如果不扩展 Activity 类,意图将无法在 Android 中运行。

因此,您可以做的是在您的GameView 类中创建一个MainActivity 类的对象并获取变量的值。

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);

它使用对象来引用您在MainActivity.java 中的public 字段。我相信这应该回答你的问题,并帮助你。

如果没有,请在下面对问题发表评论。

【讨论】:

  • 你的意思是把第一个代码块放在 StartScreen 中吗?因为 editTexts 在 StartScreen 活动中。否则 playerOneEditText 和 playerTwoEditText 显示为错误。
  • 是的。无论您在何处获取两个 EditTexts 的文本,都拥有 2 个 String 变量。然后在GameView 中有另一段代码。
  • MainActivity 是带有 TextViews 的,而不是 GameView。这就是我使用 canvas.drawText 的原因。
  • 好的。因此,从MainActivity 获取文本并将变量设置为这些值,然后使用. 运算符在GameView 中引用它们。有问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多