Android 为 2 个或更多 Activity 传递倒数计时器的值

标签 android countdowntimer

我试图将 countdownTimer 值从 Activity 1 传递到 Activity 2,并从 Activity 1 获得的值开始 Activity 2 中的倒数计时器,但我不知道如何开始指向 Activity 2 中的计时器作为变量,这是我的 Activity 1 代码

    new CountDownTimer(20000, 1000) {
        public void onTick(long millisUntilFinished) {
            tv.setText("seconds remaining: " + millisUntilFinished / 1000);

        }
        public void onFinish() {
            tv.setText("done!");
        }
     }.start();

    next.setOnClickListener(new OnClickListener(){
        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            Intent i = new Intent(MainActivity.this, Page2.class);
            i.putExtra("timervalue", tv.getText());
            startActivity(i);
        }

    });

这是 Activity 2 中的代码

    Bundle bundle = getIntent().getExtras();  
    long value = Long.parseLong(bundle.getString("timervalue"));
    new CountDownTimer(value, 1000) {
        public void onTick(long millisUntilFinished) {
            tv.setText("seconds remaining: " + millisUntilFinished / 1000);
        }
        public void onFinish() {
            tv.setText("done!");
        }
     }.start();  

我还尝试通过使用 Intet 而不是 Bundle 来制作这样的 Activity 2

    Intent results = this.getIntent();
    String s = results.getExtras().getString("timervalue");
    long value = Long.parseLong(s);

    new CountDownTimer(value, 1000) {
        public void onTick(long millisUntilFinished) {
            tv.setText("seconds remaining: " + millisUntilFinished / 1000);
        }
        public void onFinish() {
            tv.setText("done!");
        }
     }.start();  

我认为我在 putExtra 和 getExtra 时遇到的错误但我不确定,我真的是 java 的初学者所以请任何帮助...... 非常感谢

最佳答案

这是正确的代码

在 Activity 1 中

long remainingtime;

在onCreate下

 new CountDownTimer(20000, 1000) {

        public void onTick(long millisUntilFinished) {
            Counter.setText("Time left: " + millisUntilFinished / 1000);
                remainingtime=millisUntilFinished;
        }

        public void onFinish() {
        Counter.setText("done!");
    }}.start();  



public void onClick(View v) {

Intent i = new Intent(Activity1.this, Activity2.class);

   Bundle timetransfer=new Bundle();
    timetransfer.putLong("timer", remainingtime);
        i.putExtras(timetransfer);

Activity 2

Under onCreate



Bundle timetransfer = getIntent().getExtras();

                long time =timetransfer.getLong("timer");


        new CountDownTimer(time, 1000) {

            public void onTick(long time) {
                Counter2.setText("Time Left: " time / 1000);
            }

            public void onFinish() {
                Counter2.setText("Time is UP!");

                finish();    }

         }.start();

你必须删除这部分:

long_remaingtime=millisUntilFinished / 1000;

然后放

long_remaingtime=millisUntilFinished;

因为在您的情况下,您将大约 20000(millisUntilFinished) 除以 1000,根据耗时,您得到大约 20 秒, 然后在其下方放置再次将此数字除以 1000 的代码。因此,在下一个 Activity 中,您会自动收到一个时间已过的错误。

关于Android 为 2 个或更多 Activity 传递倒数计时器的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14716468/

相关文章:

安卓ViewPager "slide lag"

reactjs - 如何使用 React Count Down Timer 单击提交按钮后以秒为单位获取时间

android - 在android中使用CountDownTimer时如何从用户那里获取输入

java - 设置 CountDownTimer 来运行 onDestroy() 的正确方法是什么?

javascript - jquery 倒数计时器 NaN

java - 如何校准磁传感器?

java - Android 上的 .connect() 程序崩溃,未连接

android - 为什么 Android uiautomator 的 UiDevice#takeScreenshot 在模拟器上总是返回 false

android - 如何使用 Coil 从 URL 获取位图?

android - 如何在 Kotlin 中创建一个简单的倒数计时器?