如何将localy声明的整数传递给另一个活动

时间:2018-02-25 04:23:52

标签: java android-studio

我在第一个活动中声明了int score = 100并将其用于我的第二个活动,现在int得分在第二个行为中被声明为数组。但是它在本地变量中声明,那么我如何才能将它用于我的第三个活动呢?

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_level2);

    ans1 = findViewById(R.id.ans1);
    btn1 = findViewById(R.id.btn1);

   Intent i = getIntent();
    final int[] score2 = {i.getIntExtra("fscore", 0)};
   scr1 = (TextView) findViewById(R.id.scr1);
   scr1.setText(String.valueOf(score2[0]));

    btn1.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View view)
        {
            String answer = ans1.getText().toString();
            if (score2[0] == 0)
            {
                Toast.makeText(getApplication(),"You Lose!", Toast.LENGTH_SHORT).show();
                gameover();
            }
            else
            {
                if (answer.equalsIgnoreCase("ANSWER2"))
                {
                    Toast.makeText(getApplication(),"CORRECT!!", Toast.LENGTH_SHORT).show();

                }

                else
                {
                    Toast.makeText(getApplication(),"Wrong Answer -10 Points", Toast.LENGTH_SHORT).show();
                    score2[0] = score2[0] - 10;
                    scr1.setText(String.valueOf(score2[0]));
                }

            }
        }
    });

}
public void gameover()
{

    Intent intent = new Intent(this, gameover.class);
    startActivity(intent);
}

}

1 个答案:

答案 0 :(得分:0)

如果您希望在游戏中获得分数,那么您的功能主体应如下所示:

    Intent intent = new Intent(this, gameover.class).putExtra("score",yourIntValue);
    startActivity(intent);

在您的第二项活动中:

intent.getIntExtra("score", defValue);  // store in a variable or add in an array

它将为您提供传递的int值,您可以将其添加到数组中,也可以使用与上面相同的方法将其传递给第三个活动。

有一件事我注意到你有一个int数组,因为你试图让变量final在内部函数中使用吗?

final int[] score2 = {i.getIntExtra("fscore", 0)};

如果您多次使用相同的值,为什么不使用私有访问声明全局范围变量

private int score2;

为其分配一个值 final int [] score2 = {i.getIntExtra(" fscore",0)};

score2 = i.getIntExtra("fscore",0);

现在随时随地使用得分。这里不需要采取阵列