2016-11-13 1 views
-1

나는 Activity A와 B를 가지고 있습니다. 이제 다른 스레드에서 처리되는 "이벤트"가 생깁니다. 앱이 실행되면 B가 시작되지만 A가 삭제됩니다.안드로이드는 Handler.post 함수를 통해 finish()를 호출합니다.

UI 스레드에 항목을 게시하는 처리기가 있습니다.

Handler hexample = new Handler(Looper.getMainLooper()); 

지금, 스위칭 아무 문제 없지만, 마무리() 메서드를 호출하면 다음과 같습니다

내 클래스로이 나던 작품은 android.app.Activity에서 에 캐스트 할 캔트
hexample.post(new Runnable() { 
    @Override 
    public void run() { 
    Intent intent = new Intent(getApplicationContext(),LobbyActivity.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(intent); 
    ((Activity)getApplicationContext()).finish(); 
    } 
}); 

나는 그것을 어떻게해야합니까 작업?

답변

0

마무리만으로 충분하지 않으며 캐스팅 할 필요가 없습니다. 그 상황에서 다른 활동의 종료를 호출 할 수 없습니다. 사용자의 시나리오는 사용자가 활동 A에 있고 B를 시작한 다음 B를 시작하고 A를 끝내기를 원할 때만 작동합니다.

+0

인 텐트에서 ApplicationContext를 참조하지 마십시오. LocateActivity.class와 같은 resonable Context를 제공하십시오. 액티비티 나 서비스에서 작업하지 않는 경우이 클래스를 구성 할 때 Activity에서 컨텍스트를 전달하십시오. –

+0

메신저가 응용 프로그램 수준에서 작업 중이므로 현재 활동을 전달합니다. 도와 주셔서 감사합니다! – NotMeForSure

관련 문제