안녕하세요~ viewpager로 webview 화면을 구성하였습니다.
webview 안에 url만 바뀌는 거라 이렇게 구현했는데요,,
제가 슬라이드로 TAB3을 선택하고 다른메뉴 갔다가 다시 이 화면으로 오면 초기화가 안되어 바로 TAB3번 화면부터 띄워집니다.
TAB1 화면으로 띄우고자 onPageChangeListener.onPageSelected(0); 도 넣어봣는데 소용이 없네요..
제가 원하는것은 다른화면으로 갔을때 모든화면이 다 remove 되고 이 메뉴를 선택했을때 초기화면부터 다시 띄우는건데.. 몇일째 도돌이표입니다 ㅠㅠ
방법이나 힌트좀 부탁드립니다~
public class Fragment20 extends MyBaseFragment implements TabHost.OnTabChangeListener {
private static Fragment20 fragment_;
public static Fragment20 sharedInstance() {
if (fragment_ == null) {
fragment_ = new Fragment20();
}
return fragment_;
}
ViewPager viewPager;
HorizontalScrollView hScrollVIew;
TabHost tabHost;
PagerAdapter customAdapter = null;
private String[] tabNames = {
"TAB1",
"TAB2",
"TAB3"};
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_main, container, false);
viewPager = (ViewPager) v.findViewById(R.id.pager);
customAdapter = new CustomPagerAdapter(getActivity());
viewPager.setAdapter(customAdapter);
viewPager.setOffscreenPageLimit(2);
viewPager.addOnPageChangeListener(onPageChangeListener);
hScrollVIew = (HorizontalScrollView) v.findViewById(R.id.h_scroll_view);
tabHost = (TabHost) v.findViewById(R.id.tabHost);
tabHost.setup();
for(int i=0; i<tabNames.length; i++){
TabHost.TabSpec tabSpec;
tabSpec = tabHost.newTabSpec(tabNames[i]);
tabSpec.setIndicator(tabNames[i]);
tabSpec.setContent(new FakeContent(getActivity()));
tabHost.addTab(tabSpec);
}
tabHost.setOnTabChangedListener(this);
onPageChangeListener.onPageSelected(0);
return v;
}
/// viewPager Listener
private ViewPager.OnPageChangeListener onPageChangeListener = new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}
@Override
public void onPageSelected(int position) {
tabHost.setCurrentTab(position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
};
// tabHost Listener
@Override
public void onTabChanged(String tabId) {
int selectedItem = tabHost.getCurrentTab();
viewPager.setCurrentItem(selectedItem);
View tabView = tabHost.getCurrentTabView();
int scrollPos = tabView.getLeft()-(hScrollVIew.getWidth()-tabView.getWidth()) /2;
hScrollVIew.smoothScrollTo(scrollPos, 0);
}
public class FakeContent implements TabHost.TabContentFactory{
Context context;
public FakeContent(Context context){
this.context = context;
}
@Override
public View createTabContent(String tag) {
View fakeView = new View(context);
fakeView.setMinimumHeight(0);
fakeView.setMinimumWidth(0);
return fakeView;
}
}
public class CustomPagerAdapter extends PagerAdapter {
private Context mContext;
private LayoutInflater mInflater;
private WebView wv;
SparseArray<View> views = new SparseArray<View>();
public CustomPagerAdapter(Context context) {
mContext = context;
mInflater = LayoutInflater.from(context);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View v = mInflater.inflate(R.layout.fragment1_layout, null);
wv = (WebView) v.findViewById(R.id.wvFragment11);
wv.setWebViewClient(new WebViewClient());
wv.getSettings().setJavaScriptEnabled(true);
if(position==0){
wv.loadUrl("http://naver.com");
} else if(position==1){
wv.loadUrl("http://daum.com");
} else if(position==2){
wv.loadUrl("http://google.co.kr");
}
((ViewPager)container).addView(v);
views.put(position, v);
return v;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
View view = (View) object;
((ViewPager)container).removeView(view);
views.remove(position);
view = null;
}
@Override
public int getCount() {
return tabNames.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public CharSequence getPageTitle(int position) {
return tabNames[position];
}
}
}