有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Android Java在活动之间传递值

我有两项活动。 两者都已实现surfaceview。 在第一个活动中,我有一个名为score1的变量,我想将score1中的值传递给第二个活动

每次我运行应用程序时,它都会在完成第一个活动并尝试加载第二个活动后崩溃。在我编写代码以获取第二个活动中的意图附加之前,一切都很好

我的第一项活动的目的是:

Intent intent = new Intent (myContext, PunchItActivity.class);
intent.putExtra("score_var", score1);
myContext.startActivity(intent);
((Activity) myContext).finish();

在我的第二个活动中,以下代码尝试获取score1变量的值:

Intent mIntent = ((Activity) myContext).getIntent();
int score1 = mIntent.getIntExtra("score_var", 0);
score1 *= molesWhacked + 10;
canvas.drawText("Score: " + Integer.toString(score1), 20, 160, blackPaint);

我无法理解为什么每次activity one离开场景,activity II尝试渲染其surfaceview并显示score1中的值时,应用程序都会崩溃


共 (2) 个答案

  1. # 1 楼答案

    问题是因为mContext为空,所以需要对其进行初始化

    如果你正在开始一项活动,你不需要使用mContext。你可以使用this你的活动,比如:

    Intent intent = new Intent (this, PunchItActivity.class);
    intent.putExtra("score_var", score1);
    this.startActivity(intent);
    this.finish();
    

    或者在匿名类中使用类似的代码:

    Intent intent = new Intent (YourActivity.this, PunchItActivity.class);
    intent.putExtra("score_var", score1);
    YourActivity.this.startActivity(intent);
    YourActivity.this.finish();
    

    在第二个活动中,您不需要使用mContext来使用^{}方法,因为您只需要获得启动第二个活动的意图。该意图已附加到第二项活动中。因此,您需要将代码修改为以下内容:

    Intent mIntent = getIntent();
    int score1 = mIntent.getIntExtra("score_var", 0);
    score1 *= molesWhacked + 10;
    canvas.drawText("Score: " + Integer.toString(score1), 20, 160, blackPaint);
    
  2. # 2 楼答案

    在你的第一个活动中尝试这样做:

    Intent intent = new Intent (myContext, PunchItActivity.class);
            intent.putExtra("score_var", score1);
            myContext.startActivity(intent);
            //((Activity) myContext).finish();