2014-07-18 1 views
1

저는 2 개의 레이아웃과 2 개의 액티비티를 가지고 있습니다. 각 액티비티는 레이아웃에 해당하며 그 중 하나는 SplashActivity이고 다른 하나는 MainActivity입니다. 응용 프로그램이 splashActivity (로고가 스플래시 로고를 보여줍니다)를 열고 5 초 동안 기다렸다가 주 활동을 열길 원하지만 스레드 때문에 setContentView가 제대로 작동하지 않습니다.스레드를 사용하여 setContentView()를 올바르게 작동시키는 방법은 무엇입니까?

P. 또한 모든 관련 문서 링크, 사전

@Override

보호 무효에서 onCreate (번들 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(); 
} 

답변

3

문제는, 당신이 그 라인을 실행 스레드의 동일한 맥락에서 실행 방법은 귀하의 경우, UI 스레드를 만드는 (timer.run(); 대신 timer.start();

timer.run();의 호출을 호출하는 것입니다 5 초 동안 대기하고 다른 모든 작업을 차단). timer.start() 새 스레드를 생성합니다

+1

감사합니다. – Carmine

관련 문제