0

我的任务是制作一个显示 5 秒钟的启动屏幕,然后应该出现登录屏幕。所以,我做了一个主要活动作为启动屏幕和显示登录表单的登录活动。在主要活动的 onCreate 函数中,我在 setContentView 函数之后设置了 thread.sleep(5000) 函数,然后加载登录活动。但问题是没有出现主要的活动内容。

那么我哪里错了?

4

3 回答 3

1

这对我来说很好。请检查一下。

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;

import android.os.Message;

import android.view.Window;
import com.om.utils.Constant;
import com.om.utils.Utils;

public class Splash extends Activity {

    private static final int GoNextActivity = 1988;
    private static final int FinishThisActivity = 1989;
    private Intent intent = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.splash);



        if (Utils.isOnline(Splash.this)) {
            mHandler.sendEmptyMessageDelayed(GoNextActivity, 2000);
        } else {
            Utils.displayToast(Splash.this, Constant.NO_NETWORK_CONNECTION);
            mHandler.sendEmptyMessageDelayed(FinishThisActivity, 2000);
        }
    }

    Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            // TODO Auto-generated method stub
            switch (msg.what) {
            case GoNextActivity:
                intent = new Intent(Splash.this, HomeActivity.class);
                startActivity(intent);
                finish();
                break;
            case FinishThisActivity:
                finish();
                break;
            default:
                break;
            }
            super.handleMessage(msg);
        }
    };
}

它可能会帮助你。

于 2013-10-28T07:54:01.930 回答
0

当您在 onCreate() 中调用 Thread.sleep(5000) 方法时,它会阻止您的主 UI 线程执行任何操作。它等待睡眠指令 5 秒。它不允许应用程序为您的启动活动创建视图。在睡眠指导之后,我猜,你正在开始你的家庭活动。所以它发生得很快,第二个活动排在前面。这就是为什么您在启动活动中看不到任何内容的原因。还有一件事,使用 postDelayed(Runnable, timeInMillis) 方法显示启动屏幕并在 timeInMillis 间隔后启动您的主要活动。

于 2013-10-28T09:02:51.787 回答
0

您可以为此简单地使用延迟处理程序:

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

    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {

            //launch new activity here

        }
    }, 5000);
}
于 2013-10-28T08:00:52.117 回答