2011-04-20 6 views
1

내 응용 프로그램에 탭 호스트가 있고 내부에 3 가지 활동을 처리하는 활동 그룹을 사용하고 있습니다.뒤로 버튼을 클릭하면 활동 그룹이 활동을 새로 고치지 않습니다.

예 : ActivityGroup는 핸들 -> B -> C

내가 Intent.FLAG_ACTIVITY_CLEAR_TOP 플래그를 사용하고,이 활동을 시작

.

내 문제는 사용자가 A-> B-> C로 이동하여 뒤로 버튼을 누르면 B 액티비티가 나타나지만 다시 시작하거나 다시로드하거나 새로 고침하지 않을 때 발생합니다. 이전과 같은 상태입니다.

예를 들어 사용자가 C로 다시 이동하면 C가 새로 고쳐 지지만 C에서 돌아올 때 .... B가 돌아 오지 않습니다. BI에

는 onResume, ONSTART, onReestart 등의 방법을 implementend 메인 스레드가 간다 결코 그것을 디버깅 ...

그리고 난 C가있는 콘텐츠가 표시 변경을 변경할 수 있기 때문에 B를 새로 고침 할 필요가있다 B.

나는 3 일간이 googleled하고 나는이 방법 onResume()에서 새로 고침 데이터 코드를 작성해야 희망 솔루션 ..

+0

startActivityForResult(); –

+0

콘텐츠를 표시하는 B의 onResume()에 해당 코드를 작성해야합니다. 일부 데이터에 액세스하려고하는 경우에도 onResume 메소드에서 데이터를 채워야합니다. 그것의 명확하지 않은 경우 B의 oncreate 메서드를 게시하고 C 호출 후에 변경되어야하는 표시. –

+0

나는 onResume 메서드를 덮어 썼다. 그러나이 메서드는 절대로 호출되지 않는다. 일부 중단 점을 사용하여 디버깅했지만 실행 스레드가 onResume에 도달하지 않습니다 ... 또한 onReestart 및 onStart를 시도했습니다 ... – sluceno

답변

0

을 발견 할 수 없었다.

2

이 문제도 발생했습니다.

나는 this blog post을 기반으로 ActivityGroup 코드를 사용하고있었습니다.

뒤로 단추를 누르면 이전보기가 제대로로드되지만 관련 활동이 onResume()을 발생시키지 않습니다.

오버라이드 및 공개 onResume()에 대한 확장 된 활동을 사용하고있었습니다.

나는 this blog post을 발견 했으므로 뷰를 확장 된 활동으로 캐스팅하고 onResume()을 호출했습니다.

빙고.

편집 .... 여기

public class YFIMenuListActivity extends ListActivity { 
.... 
    @Override 
    public void onResume() { 
    super.onResume(); 
    } 
.... 
} 

onResume()

는 일반적으로 보호됩니다 ... 좀 더 상세하게, 그러나 나는 그것을 무시하고 내 ActivityGroup이 호출 할 수 있도록 공개합니다. 나는이 활동 그룹 (나는 방금 놀았 던)에서 확장 된 목록 활동만을 갖는다. 다른 활동이있는 경우 각각은 onResume()을 무시해야하며 캐스팅하고 호출하기 전에 v.getContext()에서 반환 한 컨텍스트 유형을 살펴 봐야 할 것입니다. 내가 cousin_itt의 접근 방식의 확장 버전을 구현하기 위해 관리했습니다

public class BrowseGroup extends ActivityGroup { 
..... 
    @Override 
    protected void onResume() { 
    super.onResume(); 
    // call current activity's onResume() 
    View v = history.get(history.size()-1); 
    YFIMenuListActivity currentActivity = (YFIMenuListActivity)v.getContext(); 
    currentActivity.onResume(); 
    } 
.... 
} 
+0

무엇을 의미합니까? – Mikey

+0

같은 문제가 생겼어. 지금은 onResume과 함께, 오리엔테이션을 바꿨을 때 이전 활동으로 돌아 간다. – Mikey

+0

@cousin_itt 나는 같은 문제가 있지만 onResume()을 호출 할 수 없다. ,이 경우 OnResume()을 호출하는 방법을 알려주십시오. –

1

:

내 ActivityGroup는 다음과 같이 보인다.내가 수동 onResumes을 해고 내 ActivityGroup에서 다음 onResume 기능을 썼다

protected void onResume() 

public void onResume() 

에 내 활동 모두에서

내가에서 onResume을 변경 활동 그룹 내에서 사용되는 :

@Override 
protected void onResume() { 
super.onResume(); 
View v = history.get(history.size()-1); 

MainPeopleView currentActivity = null; 

try { 
    currentActivity = (MainPeopleView)v.getContext(); 
    currentActivity.onResume(); 
} 
catch (ClassCastException e) { 
    Log.e(TAG, e.toString()); 
} 

ProfileView otherActivity = null; 

try { 
otherActivity = (ProfileView)v.getContext(); 
otherActivity.onResume(); 
} 
catch (ClassCastException e) { 
    Log.e(TAG, e.toString()); 
} 
} 

나는 이것이 최악의 안드로이드 해킹 I'v 전자 서면. 나는 결코 다시 activitygroup을 사용하지 않는다.

0

ActivityGroup과 같은 상황에서는 onFocusChanged(boolean hasFocus)이 매우 유용하다는 것을 발견했습니다. onResume()이 아닌 경우에도 실행됩니다. TabHostActivityGroup이있는 몇 가지 앱에 사용합니다. 여기서 새로 고침을 강제로 수행하고 Activity이 다시 초점을 맞출 때 항상 해고되도록 할 수 있습니다.

1
((ReportActivity)getLocalActivityManager().getActivity("ReportActivity")).onResume(); 

ReportActivity 이름이 활동을 PS를 백업 할 것입니다 : v.getContext();

만 ActivityGroup을 반환하고 자식 활동을 호출 할 수는 없습니다.

관련 문제