마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

TabWidget hide 처리하는법

0 추천

하단에 탭 메뉴를 구성하고,  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 에러
    }
   
}

--------------------------------------------------------------------

씨애틀 (120 포인트) 님이 2013년 3월 13일 질문
씨애틀님이 2013년 3월 13일 수정

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...