2012-05-23 7 views
1

TabActivity에 대한 해결책을 TabHost에있는 http://ericharlow.blogspot.com/2010/09/experience-multiple-android-activities.html에 설명 된대로 구현하고 있습니다. 나는 이것이 차선책임을 깨닫는다. 그러나 나는 이미이 길을 꽤 멀리하고 있으며, 남은 딸꾹질이 하나 밖에 없다. 내가 (활동 ID에 대한 String의 목록을 사용하여) 관리하고있는 스택의 상단에 팝업 할 필요가 있고 내가 사용하여이 작업을 얻을 수 있다는 사실을 알고 :안드로이드에서 탐색 스택 맨위의 활동 시작

Activity current = getLocalActivityManager().getActivity(mIdList.get(0)); 

을하지만, 나도 몰라 "보여주는"방법의 current.

는 내가이 작업을 수행 할 수 있다는 사실을 알고 :

Activity current = getLocalActivityManager().getActivity(mIdList.get(1)) 
current.finish(); 

그리고 이것은이 스택에 두 개 이상의 활동 인의 경우 원하는 결과를해야합니다. 그러나 하나만있는 경우 ArrayOutOfBoundsException으로 실패합니다.

주어진 활동을 어떻게 "표시"할 수 있습니까?

+0

체크 크기'mIdList.size()' –

+0

내가 알고있는,하지만 난 (시'크기를 어떻게해야합니까)'== 1? –

+0

크기가 1 인 경우 mIdList.get (0)입니다. 크기가 1이면 스택에 하나의 액티비티가 있고 두 번째로 시도하는 중 ... 요소 인 mIdList를 사용하여 요소가 1이고 요소의 위치가 항상 인덱스 0에서 시작됩니다. –

답변

1

활동 스택 상단에 항상 활동 시작하려면이 방법을 시도해보십시오 첫번째

List<ActivityManager.RunningTaskInfo> processes1 = activityManager.getRunningTasks(1); 
ComponentName componentInfo = processes1.get(0).topActivity; 
String classname =processes1.get(0).topActivity.getClassName(); 
String packagename = processes1.get(0).topActivity.getPackageName(); 
if(classname.equalsIgnoreCase("com.YOUR_PACKAGE_NAME..YOURACTIVITY_NAME")) 
    { 
     Intent intent24 = new Intent(Intent.ACTION_MAIN).addCategory(
     Intent.CATEGORY_LAUNCHER).setClassName("YOUR_PACKAGE_NAME", 
     "com.YOUR_PACKAGE_NAME..YOURACTIVITY_NAME").addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) 
     .addFlags(Intent.FLAG_FROM_BACKGROUND).setComponent(new ComponentName("YOUR_PACKAGE_NAME", 
     "com.YOUR_PACKAGE_NAME..YOURACTIVITY_NAME")); 
     getApplicationContext().startActivity(intent24); 
    } 
    else 
    { 
    //DONE SOMETHING HERE... 
    } 
+0

나는 비슷한 것을했기 때문에 답을 받아 들일 것입니다. 'Intent'를 사용 했음에도) 복잡하지는 않았지만 아마도 잘못되었을 수도 있지만 작동하는 것처럼 보입니다. Intent firstIntent = getLocalActivityManager(). getActivity (mIdList.get (0)). getIntent(); 창 newWindow = getLocalActivityManager(). startActivity (mIdList.get (0), firstIntent); setContentView (newWindow.getDecorView()); ' –

+0

+1은 백그라운드 활동을 시작하는 새로운 방법을 알려주지 만 활동에서이 코드를 사용하지만 코드와 서비스 및 활동 모두에서 작동하는 경우에만 코드가 작동 할 것이라고 확신합니다. 또는 브로드 캐스트 리시버 베스에서 나는 그것을 테스트했습니다.하지만 친구가 대답을 얻을 것입니다. –

+0

아, 이해합니다. –