하단에 탭 메뉴를 구성하고, MovieActivity에 접속 했을때 외부에 있는 웹 페이지에서
특정버튼 클릭시 탭을 보였다, 안보였다 처리를 할려고 합니다.
물론, 탭이 안보일땐, 전체 화면이 다 보이고, 탭 보일땐 내용이 뒤에 탭 위까지만 보여지게 구성을 할려고 합니다.
하단 myParentActivity 2군데서 오류가 발생하는데, 무엇 때문인지. 알수가 없네요.
main.xml
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="5dp">
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:padding="5dp" />
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</TabHost>
--------------------------------------------------------
MainActivity.java
public class MainActivity extends TabActivity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// main.xml 파일에 구성한 리소스를 이 액티비티에서 사용한다.
setContentView(R.layout.main);
// 이 탭액티비티에서 사용할 수 있는 TabHost 객체를 얻는다.
TabHost tab_host = getTabHost();
// 각 탭에 사용할 TabSpec 객체.
// 탭호스트에 TabWidget 과 FrameLayout 이 사용할 정보를 넘겨주는 역할을 한다.
TabHost.TabSpec spec;
// 각 탭의 FrameLayout 이 사용하는 액티비티를 구성하는 객체
Intent intent;
// 탭에서 액티비티를 사용할 수 있도록 인텐트를 생성한다.
intent = new Intent().setClass(this, MovieActivity.class);
// "movie" 이라는 태그 값을 가진 TabSpec 객체를 생성한다.
spec = tab_host.newTabSpec("movie");
// TabSpec 객체에 TabWidget 객체가 출력할 탭의 이름을 설정한다.
spec.setIndicator("Movie");
// TabSpec 객체에 FrameLayout 이 출력할 페이지를 설정한다.
spec.setContent(intent);
// 탭호스트에 해당 정보를 가진 탭을 추가한다.
tab_host.addTab(spec);
// 첫번째 탭을 선택한 상태로 지정한다.
tab_host.setCurrentTab(0);
MovieActivity child = (MovieActivity)getLocalActivityManager().getActivity("movie");
child.registerParentActivity(this);
// MainActivity.setCurrentTab(0);
}
public static void setCurrentTab(int index){
// tab_host.setCurrentTab(index);
}
public void toggleTabs(){
TabWidget tab = getTabHost().getTabWidget();
int visibility = View.GONE;
if (tab.getVisibility() == View.GONE){
visibility = View.VISIBLE;
}
tab.setVisibility(visibility);
}
}
------------------------------------------------------
MovieActivity.java
public class MovieActivity extends Activity
{
private final Handler handler = new Handler();
private WebView webView;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
WebView webView = new WebView(this);
setContentView(webView);
//webview = (WebView) findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new AndroidBridge(), "android");
try {
webView.loadUrl("http://m.test.com/test.asp");
} catch (Exception ex) {
ex.printStackTrace();
}
}
private class AndroidBridge{
public void callAndroid(){
handler.post(new Runnable(){
@Override
public void run(){
doToggle();
//TabWidget layout1 = (TabWidget) findViewById(android.R.id.tabs);
//layout1.setVisibility(View.GONE); <-- 탭이 hide 처리 안됨
}
});
}
}
private void doToggle() {
((MainActivity)myParentActivity).toggleTabs(); <-- myParentActivity 에러
}
public void registerParentActivity(Activity parent) {
myParentActivity = parent; <-- myParentActivity 에러
}
}
--------------------------------------------------------------------