안드로이드 개발 질문/답변
(글 수 45,052)
TabHost(MainTab)를 이용해 4개의 Tab를 추가하고(Tab_1, Tab_2, Tab_3, Tab_4)
1,2,3 탭에 WebView로 화면을 구성하였습니다.
4번 화면(즐겨찾기)은 각 탭값(tabIndex), WebView URL을 list로 뿌려주고있습니다.
질문 드릴것은 Tab_4(즐겨찾기)에서 list Item클릭시 탭 이동과
해당 탭의Webview URL값을 저장값으로 변경하고 싶습니다.
tab이동은 tabHost.setCurrentTab(index) 방식으로 하는것을 검색하여 찾았고
액티비티간 값 전달은 아래와 같은 방법을 이용하는것 같던데
탭이 사라지고 전체화면으로 나와서 탭 이동과 해당화면의 webview url에 어떤식으로 값을 전달해야되는지 질문드립니다.
Intent intent = new Intent(BookMarkActivity.this,TabMenu3Activity.class);
intent.putExtra("url", ItemsUrl.get(position));
intent.putExtra("tabID", ItemsTabID.get(position));
startActivity(intent);
intent.putExtra("url", ItemsUrl.get(position));
intent.putExtra("tabID", ItemsTabID.get(position));
startActivity(intent);
검색을 해봐도 탭이동과 Activity간 값전달은 찾았는데 tabSub와 tabSub간 값전달은 어떤식으로 해야되는지 감이 안잡히네요 ㅜㅜ
**MainTabActivity*
//첫번째 탭 구성
tabHost.addTab(tabHost.newTabSpec("tab1").
setIndicator("tab1",getResources().getDrawable(R.drawable.tab_01)).
setContent(new Intent(this, TabMenu1Activity.class).
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)));
//두번째 탭 구성
tabHost.addTab(tabHost.newTabSpec("tab2").
setIndicator("tab2",getResources().getDrawable(R.drawable.tab_02)).
setContent(new Intent(this, TabMenu2Activity.class).
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)));
//세번째 탭 구성
tabHost.addTab(tabHost.newTabSpec("tab3").
setIndicator("tab3",getResources().getDrawable(R.drawable.tab_03)).
setContent(new Intent(this, TabMenu3Activity.class).
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)));
tabHost.addTab(tabHost.newTabSpec("tab1").
setIndicator("tab1",getResources().getDrawable(R.drawable.tab_01)).
setContent(new Intent(this, TabMenu1Activity.class).
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)));
//두번째 탭 구성
tabHost.addTab(tabHost.newTabSpec("tab2").
setIndicator("tab2",getResources().getDrawable(R.drawable.tab_02)).
setContent(new Intent(this, TabMenu2Activity.class).
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)));
//세번째 탭 구성
tabHost.addTab(tabHost.newTabSpec("tab3").
setIndicator("tab3",getResources().getDrawable(R.drawable.tab_03)).
setContent(new Intent(this, TabMenu3Activity.class).
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)));
//네번째 탭 구성
tabHost.addTab(tabHost.newTabSpec("tab4").
setIndicator("tab4",getResources().getDrawable(R.drawable.tab_04)).
setContent(new Intent(this, BookMarkActivity.class).
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)));
tabHost.addTab(tabHost.newTabSpec("tab4").
setIndicator("tab4",getResources().getDrawable(R.drawable.tab_04)).
setContent(new Intent(this, BookMarkActivity.class).
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)));
Intent intent = this.getIntent();
int tabindex = intent.getIntExtra("TabIndex", 0);
tabHost.setCurrentTab(tabindex);
int tabindex = intent.getIntExtra("TabIndex", 0);
tabHost.setCurrentTab(tabindex);
***TabMenu1Activity***(탭 1,2,3 동일)
setContentView(R.layout.webview_layout);
webview = (WebView)findViewById(R.id.webview);
webview.setVerticalScrollbarOverlay(true);
webview.setVerticalScrollbarOverlay(true);
WebSettings settings = webview.getSettings();
settings.setJavaScriptEnabled(true);
settings.setJavaScriptEnabled(true);
webview.loadUrl("url);
webview.setWebViewClient(new WebViewClass(this));
webview.setWebViewClient(new WebViewClass(this));
***webview_layout.xml***(tab1,tab2,tab3 동일 xml 사용)
<?xml version="1.0" encoding="utf-8"?>
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
2012.10.01 05:48:39
finish(); // 일단 기존꺼 닫고
Intent i = new Intent(test.this, MainTab.class);
i.putExtra("tabhost", "1".toString()); // 뒤에 넘어가는 1은 탭인덱스
startActivity(i);
이런식으로 탭메인을 호출하시면 됩니다. 탭으로 직접 넘어가면 당연히 탭호스트 메인이 아니니 해당 탭 class 만 뜨겠죵 ^^!
도움이 되셨으면~
에구.. 밤새도록 다른 문제로 뭐 찾아보다.. 지나칠 수 없어서 회원가입까지하고 댓글 썼네요..ㅋㅋ




탭이동이 않되었네요 탭액티비티(4액티비티포함) 위로 탭3번이(탭액티비티안쪽3번이아닌)이 호출 된상황같습니다.
탭뷰가 그닥 친절하지 않습니다. 저도 초기부터 탭뷰로 개발해서 같은문제로 고민을 많이 했는데
탭뷰 내부 액티비티간에 데이터 주고 받는것은 Application class를 이용해서 전역변수로 처리하였고
탭이동은 탭뷰에 브로드캐스트 리시버를 달아서 해결했습니다.
더 좋은 방법이 당연히 있을수 있구요