【问题标题】:Trying to pass data through Bundle always gives null尝试通过 Bundle 传递数据总是给出 null
【发布时间】:2022-01-15 12:52:36
【问题描述】:

所以我正在尝试构建一个在屏幕上随机弹出一个按钮的 android 应用程序,用户必须点击该按钮才能获得更好的分数,但是有一个计时器,当它达到 0 时它应该开始一个新的显示最终得分的活动。

我实现了一个倒数计时器,当onFinish() 被触发时,新活动通过一个意图启动,该意图也将分数变量发送到新活动。

问题是,这一切都很好,除了当我使用toast.makeText 时,我可以看到传递的变量为空。

这是我的倒数计时器代码

new CountDownTimer(timeleftinmilliseconds, 1000) {

        public void onTick(long millisUntilFinished) {
            countdownText.setText(" time left : " + millisUntilFinished / 1000);
            timeleftinmilliseconds=millisUntilFinished;
        }

        public void onFinish() {
            Intent finalintent;

            finalintent = new Intent(PlayTime.this,ScoreScreen.class);
            finalintent.putExtra("key",score);


            startActivity(finalintent);
        }

    }.start();

这是来自 ScoreScreen 活动的代码,用于接收分数(现在存储在 previousscore 中)

void Capture(){

    Bundle bundle = getIntent().getExtras();
    String previousscore = bundle.getString("key");
    Toast.makeText(getApplicationContext(), ""+previousscore, Toast.LENGTH_SHORT).show();

}

感谢您的帮助!

【问题讨论】:

  • 你试过bundle.getStringExtra("key")吗?
  • 你的score变量是什么类型的?是String吗?

标签: java android android-studio android-intent


【解决方案1】:

您收到的是字符串,但您将整数作为分数传递。所以你需要像这样接收整数.change代码,它会起作用。

        Bundle bundle = getIntent().getExtras();
        int previousscore = bundle.getInt("key");
        Toast.makeText(getApplicationContext(), ""+previousscore, Toast.LENGTH_SHORT).show();

【讨论】:

    【解决方案2】:

    您已从 Intent 传递数据,并尝试从 bundle 接收数据。这是不可能的,你必须使用意图来接收数据。 你可以这样使用它。

    Intent intent = getIntent(); 
    int previousscore = intent.getIntExtra(“key”);
    
    Toast.makeText(getApplicationContext(), ""+previousscore, Toast.LENGTH_SHORT).show();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-28
      • 2022-01-16
      • 2020-05-24
      相关资源
      最近更新 更多