2011-12-17 5 views
2

내 응용 프로그램에 대해 this 튜토리얼을 따라갔습니다.TabGroupActivity에서 자식 활동 상태 유지

나는이 : 탭 1 : Tabgroupactivity1> (startchildactivity) MainActivty> (startchildactivity) ListActivity> (startchildactivity) DetailActivity

유사 나는 다른 두 개의 탭이 있습니다.

다음 활동 중 하나에서 이전 활동으로 돌아 가면 이전 활동이 다시 시작됩니다.

나도 내가 흐름을 통해 갈 수있는 한 번만 SINGLE_TOP 및 SINGLE_TASK로하지만,이

두 번째는 (다음/아이) 활동 다음 호출하지 않습니다를 활동을 startchild 위해 노력했다

그래서 자식 활동을 호출하고 돌아 오는 동안 현재 활동 상태를 유지할 수 있습니까 ?? 내가 listactivty의 의도에 onclick을 다음 사용하고

:

Intent myintent = new Intent(getParent(),Second.class); 
myintent.putExtra("id",favadapter.getItem(position).id.toString()); 
TabGroupActivity parentFav = (TabGroupActivity)getParent(); 
parentFav.startChildActivity("FavActivity", myintent); 
+0

은 올바른 이해를위한 코드를 붙여 넣습니다. – RobinHood

+0

당신은 솔루션을 가지고 있습니까 –

답변

2

사실 TabGroupActivity는 안드로이드 2.1 및 2.2에서 문제가 제대로 스택에서 제거되지 활동은 모든 시간을 다시 시작하기 위해 인스턴스를 발생합니다.

Intent lastIntent = manager.getActivity(lastId).getIntent(); 
     Window newWindow = manager.startActivity(lastId, lastIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)); 
     setContentView(newWindow.getDecorView()); 

이 모든 lastID 의도를 제거하는 것을 의미, 우리는 심지어 아이 마무리에서 우리는 다음과 같이했기 때문에 하나 개의 인스턴스 만 또 다른 문제는 두 번째로하지 실행의 원인, SINGLE_TOP 및 SINGLE_TASK 사용하는 문제를 극복하기 위해

및 최신 인스턴스를 가져 오십시오. lastId (활동 시작시 사용되는 .startChildActivity("FavActivity", myintent);)가 여러 인스턴스에 대해 동일하기 때문입니다.

두 번째 또는 여러 인스턴스 사용을 허용하려면 동적 의도 ID을 사용하여 하위 작업을 시작하십시오. 예를 들어

,

Intent myintent = new Intent(getParent(),Second.class); 
myintent.putExtra("id",favadapter.getItem(position).id.toString()); 
TabGroupActivity parentFav = (TabGroupActivity)getParent(); 
parentFav.startChildActivity("FavActivity"+System.currentTimemillis(), myintent); 
+0

정확히 한 달 전에이 문제를 사용했습니다 : 문자열 newId = Id + ""+ Math.random() * 1000; \t \t Window window = getLocalActivityManager(). startActivity (newId, intent.addFlags (Intent.FLAG_ACTIVITY_SINGLE_TOP)); 때때로 너무 큰 스택을위한 빈 화면을 제공합니다. :( – Hanry