안드로이드 개발 질문/답변
(글 수 45,052)
아직 답변이 없는데요 답이 없는걸까요? 그럴리가 없는데 .....
탭이 1, 2 두개가 있습니다.
현재1번 탭에 엑티브가 있구요... 2번에 갔다가 다시 1번에 왔을때
페이지를 다시 리플레쉬 하지 않잖아요?
1번에 webview 2번에 wevview 입니다.
2번에 갔다가 1번에 왔을때 페이지를 리플레쉬 할 수 있는 방법이 있을까요?
이와 비슷한문제로 현재 1번탭에 있을때 다시 1번 탭을 클릭했을경우에도 리플레쉬를 하고 싶은데요
현재 1번탭에서 다시 1번탭을 클릭했을 경우를 못잡겠습니다. 당연히 2번으로 갔을떄는 캐치가 되는데요...
ㅠㅠ 방법이 없을까요..
이미 만들고 있어서 버튼으로 변경하는건 좀... ㅜㅜ 정말 방법이 없다면 급전향을 해야 하겠지만
탭을 클릭했을경우에 이미지 반전이 있잖아요? 그렇다면 방법이 있을것 같은데요..
아니면 Tabhost원 소스에서 탭을 클릭했을경우에 배경색을 변경시켜 주는데 이분을 찾을 수 있을까요?
이부분만 안다면 가능할것 같은데요 ㅜㅜ
2010.02.23 17:10:01
TabHost 에 추가되있는 Activity 가 새롭게 생성되지는 않더라도 onResume 은 호출 됩니다. 해당 시점에서 Refresh 를 하시면 될 듯 합니다. TabHost 에서 현재 설정된 Tab Index 값을 알아올 수도 있으니, Tab 간 전환이 이루어질때만 Refresh 를 호출 하게 하는데 큰 문제는 없을 듯 합니다.
2010.03.02 07:20:11
휴우님.. 저도 가짜해커님과 비슷한 문제로 고민을 하고 있어서요...댓글로 질문해봅니다...onResume은 Tab에 연결되어 있는 Activity에서 호출이 되는 것으로 알고 있습니다. 그렇게 되면 Tab이 선택되었을 때만이 아니고 해당 activity가 resume되는 모든 상황에서 (backlight가 켜진다던지..) 호출이 되지 않나요..? 위와 같은 방식으로 구현을 하려면 Tab Index값을 연결된 하위 activity에서 읽어들이던가 아님, TabHost에서 하위 activity의 onResume을 호출 받아야할 것 같은데... 이것이 가능한가요.. 가능하다면 어떤 방식으로 해야하는지요..?
2010.03.02 10:29:18
저도 확인해보니 onResume 은 락->언락 상황에서도 발생해서 문제가 발생할 수 있겠네요. 다른 방법으로, TabHost 단에서 setOnTabChangedListener 를 걸고, TabActivity 에서 getCurrentActivity 를 호출 해서 현재 활성화된 TabActivity 를 가져온 후, 적절한 API 를 호출해 주면 어떨까요? TabActivity 쪽, 코드를 첨부해 봅니다.
package com.huewu.example;
import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;
import android.widget.TabHost.TabSpec;
public class SampleTab extends TabActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TabHost host = getTabHost();
TabSpec spec1 = host.newTabSpec("tab1");
spec1.setIndicator("Tab1");
spec1.setContent(new Intent(this, Tab1.class));
TabSpec spec2 = host.newTabSpec("tab2");
spec2.setIndicator("Tab2");
spec2.setContent(new Intent(this, Tab2.class));
host.addTab(spec1);
host.addTab(spec2);
host.setOnTabChangedListener(new OnTabChangeListener() {
@Override
public void onTabChanged(String tabId) {
((MyTabActivity)getCurrentActivity()).refreshScreen();
}
});
}
}//end of class