我有2个布局和2个活动,每个活动对应一个布局,其中一个是SplashActivity,另一个是MainActivity。我希望应用程序打开splashActivity(splash XML显示徽标),等待5秒并打开主活动,但由于该线程,setContentView无法正常工作。
P.S。此外,任何相关的文档链接都非常有用,提前谢谢
@覆盖
protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); 的setContentView(R.layout.splash_screen);
Thread timer = new Thread() { public void run() { try { sleep(5000); } catch (InterruptedException ex) { ex.printStackTrace(); } try { Class mainMenu = Class.forName("com.carmine.project.MenuActivity"); Intent openMainMenu = new Intent(SplashActivity.this, mainMenu); startActivity(openMainMenu); } catch (ClassNotFoundException e) { e.printStackTrace(); } } }; timer.run(); }
答案 0 :(得分:3)
您的问题是您拨打timer.run();
而不是timer.start();
timer.run();
在执行该行的线程的相同上下文中调用run方法(在您的情况下,创建UI线程,等待5s,并阻止所有其他操作)。 timer.start()
产生一个新线程