miloSps 2020-12-01 17:18 采纳率: 100%
浏览 209
已采纳

Android APP 倒计时起始页 按跳过之后会继续倒计时 结果跳转2次

 自己想看网上练习做一个 起始页 倒计时5秒之后 跳转到后面一页 可以跳过 

但是我按跳过之后 倒计时不知道为什么还没有结束 之后就跳转了第2遍。

下面贴代码

package com.sicp.animeappczl;

import java.util.Timer;
import java.util.TimerTask;

import com.sicp.animeappczl.R;

import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.TextView;

public class StartActivity extends Activity implements View.OnClickListener {
	
	
	 private int recLen = 5;//跳过倒计时提示5秒
	    private TextView tv;
	    Timer timer = new Timer();
	    private Handler handler;
	    private Runnable runnable;


	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		//隐藏标题栏
		 int flag= WindowManager.LayoutParams.FLAG_FULLSCREEN;
	     requestWindowFeature(Window.FEATURE_NO_TITLE);
		    //设置当前窗体为全屏显示
	        getWindow().setFlags(flag, flag);
	        setContentView(R.layout.activity_start);
	        initView();
	        timer.schedule(task, 1000, 1000);//等待时间一秒,停顿时间一秒
	        /**
	         * 正常情况下不点击跳过
	         */

		
		new Handler().postDelayed(new Runnable() {
			
			@Override
			public void run() {
				// TODO Auto-generated method stub
				Intent intent=new Intent(StartActivity.this,MainActivity.class);
				startActivity(intent);
				finish();
			}
		},5500);
		
	}

	  private void initView() {
	        tv = (TextView) findViewById(R.id.tv);//跳过
	        tv.setOnClickListener((OnClickListener) this);//跳过监听
	    }
	 
	    TimerTask task = new TimerTask() {
	        @Override
	        public void run() {
	            runOnUiThread(new Runnable() { // UI thread
	                @Override
	                public void run() {
	                    recLen--;
	                    tv.setText("跳过 " + recLen);
	                    if (recLen < 0) {
	                        timer.cancel();
	                        tv.setVisibility(View.GONE);//倒计时到0隐藏字体
	                    }
	                }
	            });
	        }
	    };
	 
	    /**
	     * 点击跳过
	     */
	    @Override
	    public void onClick(View view) {
	        switch (view.getId()) {
	            case R.id.tv:
	                //从闪屏界面跳转到首界面
	                Intent intent = new Intent(StartActivity.this, MainActivity.class);
	                startActivity(intent);
	                finish();
	                if (runnable != null) {
	                    handler.removeCallbacks(runnable);
	                    
	                }
	                break;
	            default:
	                break;
	        }


	    }
}
  • 写回答

4条回答 默认 最新

  • 中控易动 企业官方账号 2020-12-02 11:26
    关注

    楼上的只回答对了一半。handle和runnable都没定义,修改以下两处代码即可,亲测有效。

    //handle重新定义    
    private static final Handler handler = new Handler(Looper.getMainLooper());
    
    //再定义下runnable
        /**
             * 正常情况下不点击跳过
             */
            handler.postDelayed(runnable,5500);
    
            runnable=new Runnable() {
                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    Intent intent=new Intent(TestActivity.this,MainActivity.class);
                    startActivity(intent);
                    finish();
                }
            };
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)