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

TabHost를 사용해 탭을 구성하고, 탭에 ListView를 배치해 목록 터치시 새 액티비티를 불러오도록 했는데, 제가 만든 탭바가 사라집니다.

0 추천

안녕하세요.

저는 현재 화면 하단에 '목록,알림,설정' 이라는 탭을 TabHost 위젯을 사용하여 만들어 둔 상태입니다.

각 탭을 터치 시 Fragment의 전환이 일어나며 화면이 바뀌는데,

여기서 목록이라는 탭을 터치 했을때 ListView를 배치해 두어 해당 탭의 리스트들이 뜹니다.

 

헌데 이 리스트의 한 항목을 터치 해서 또 다른 액티비티를 호출하면,

제가 하단에 만들어 둔 저 하단의 '목록,알림,설정' 탭이 그대로 사라집니다.

새창으로 뜬 액티비티에 가려지는것 같습니다..

호출당하는 새 액티비티는 상단에 '사내공지,외부공지' 라는 두개의 탭을 보유하고 있습니다.

 

저는 저 새로운 액티비티가 떠도 하단의 '목록,알림,설정' 탭은 항상 고정으로 있었으면 하는데

이를 해결하기 위해선 어떤 방법을 쓰는것이 좋을까요?

소스와 해당 상황의 이미지를 첨부하겠습니다. 

부디 이제 갓 한달째 독학중인 초보에게 고수님들의 조언 부탁드립니다.

 

 

MainActivity.java (하단의 '목록,알림,설정' 탭을 구성하며 프래그먼트 전환을 맡습니다.)

public class MainActivity extends AppCompatActivity {

    TabLayout tablayout;

    ListActivity listActivity;
    NoticeActivity noticeActivity;
    SettingActivity settingActivity;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tablayout = (TabLayout) findViewById(R.id.tabs);
        setSupportActionBar(tablayout);

        ActionBar actionBar = getSupportActionBar();
        actionBar.setDisplayShowTitleEnabled(false);
   
        listActivity = new ListActivity();
        noticeActivity = new NoticeActivity();
        settingActivity = new SettingActivity();

        getSupportFragmentManager().beginTransaction().replace(R.id.container, noticeActivity).commit();

        TabLayout tabs = (TabLayout) findViewById(R.id.tabs);
        tabs.addTab(tabs.newTab().setText("목록"));
        tabs.addTab(tabs.newTab().setText("알림"));
        tabs.addTab(tabs.newTab().setText("설정"));
        tabs.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                int position = tab.getPosition();
                Log.d("MainActivity" , "선택된 탭 : "+ position);

                Fragment selected = null;
                if (position == 0) {
                    selected = listActivity;
                } else if (position == 1) {
                    selected = noticeActivity;
                } else if (position == 2) {
                    selected = settingActivity;
                }

                getSupportFragmentManager().beginTransaction().replace(R.id.container, selected).commit();

            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) { }

            @Override
            public void onTabReselected(TabLayout.Tab tab) { }

        });
    }

    public void setSupportActionBar(TabLayout tablayout) {
    }

}

↓ 접속시 첫 화면입니다. 하단에 '목록,설정,알림' 탭이 있습니다.

 

ListActivity.java 입니다.('목록'탭을 터치했을때 표시되는 리스트뷰를 가지고 있으며, 그 목록중 하나를 터치 시에 '사내공지,외부공지' 탭을 가진 새로운 액티비티:ListDetailActivity를 띄우는 기능을 하고 있습니다..)

public class ListActivity extends Fragment {

    String[] l_values = {"목록1", "목록2", "목록3"};

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.list_activity, container, false);

        ListView listView = (ListView) rootView.findViewById(R.id.list_listView);   // ListView 가져오기
        ArrayAdapter<String> adapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_list_item_1, l_values);

        listView.setAdapter(adapter);   // ListView에 각각의 아이템표시를 제어하는 어댑터 설정

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

                Intent intent = new Intent(getActivity(), ListDetailActivity.class);
                startActivity(intent);
   
        });
        return rootView;
    }
}

↓ '목록' 탭 터치시 표시되는 리스트뷰 입니다. 이제 여기서 목록1 항목을 누르면 새 액티비티가 호출됩니다.

 

 

↓ 새로운 액티비티가 불러와졌고 상단의 '사내공지,외부공지' / 리스트뷰가 제대로 불러와졌으나

하단의 '목록,알림,설정' 탭이 가려져버렸습니다.

 

 

이를 해결하려면 어떻게 해야할지 조언 부탁드립니다. 

geniexx64 (150 포인트) 님이 2016년 7월 26일 질문

1개의 답변

0 추천
 
채택된 답변
새로운 액티비티 하단에

탭을 또 두시던지

아니면 리스트 터치시 액티비티를 띄우는게 아닌

fragment로 교체해 주시면 되겠네요.
모나미153 (17,540 포인트) 님이 2016년 7월 26일 답변
geniexx64님이 2016년 7월 26일 채택됨
...