关于action bar 的使用问题

Vincent_1216 2015-12-11 12:19:01

顶部是一action bar
中间是一个view pager 放着fragment
底部放的一个tabhost


当我换到第二个tab 的时候将action bar remove掉

getActivity().getActionBar().removeAllTabs();


当我再次点回第一个tab时 如何重新将第一个页面的tab重新添加回去


初学者跪求大神帮我解决一下。

1的代码
package com.example.fragment;

import com.example.fragmenttest.R;
import com.example.fragmenttest.TestViewPagerAdapter;


import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.ActionBar.TabListener;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;



public class Fragment1 extends Fragment{

public final static int TAB_INDEX_TAB_1 = 0;
public final static int TAB_INDEX_TAB_2 = 1;
public final static int TAB_INDEX_TAB_3 = 2;
public final static int TAB_INDEX_TAB_4 = 3;
public final static int TAB_INDEX_TAB_5 = 4;
public final static int TAB_COUNT = 5;
private ViewPager mViewPager;
private TestViewPagerAdapter adapter;
private TestPagerListener listener;
private View view;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

if(view==null){
view = inflater.inflate(R.layout.fragment1, null);
init();
System.out.println("22222222222222222222222222222222222");
}else{
/*mViewPager.setAdapter(adapter);
mViewPager.setOnPageChangeListener(listener)*/;
System.out.println("11111111111111111111111111111");
}
ViewGroup p = (ViewGroup) view.getParent();
if(p!=null){
p.removeAllViews();
}
return view;
}
private void init() {
getActivity().getActionBar().removeAllTabs();
setupTest1();
setupTest2();
setupTest3();
setupTest4();
setupTest5();
getActivity().getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
getActivity().getActionBar().setDisplayShowTitleEnabled(false);
getActivity().getActionBar().setDisplayHomeAsUpEnabled(false);
// 创建 view pager
mViewPager = (ViewPager) view.findViewById(R.id.pager1);
getFragmentManager();
adapter=new TestViewPagerAdapter(getActivity().getSupportFragmentManager());
mViewPager.setAdapter(adapter);
listener=new TestPagerListener();
System.out.println(listener+"111111111111111113313131");
mViewPager.setOnPageChangeListener(listener);
mViewPager.setCurrentItem(TAB_INDEX_TAB_1);
}

private void setupTest1() {
Tab tab = getActivity().getActionBar().newTab();
tab.setContentDescription("Tab 1");
tab.setText("推 荐");
tab.setTabListener(mTabListener);
getActivity().getActionBar().addTab(tab);
}

private void setupTest2() {
Tab tab = getActivity().getActionBar().newTab();
tab.setContentDescription("Tab 2");
tab.setText("热 点");
tab.setTabListener(mTabListener);
getActivity().getActionBar().addTab(tab);
}

private void setupTest3() {
Tab tab = getActivity().getActionBar().newTab();
tab.setContentDescription("Tab 3");
tab.setText("重 庆");
tab.setTabListener(mTabListener);
getActivity().getActionBar().addTab(tab);
}

private void setupTest4() {
Tab tab = getActivity().getActionBar().newTab();
tab.setContentDescription("Tab 4");
tab.setText("科 技");
tab.setTabListener(mTabListener);
getActivity().getActionBar().addTab(tab);
}

private void setupTest5() {
Tab tab = getActivity().getActionBar().newTab();
tab.setContentDescription("Tab 5");
tab.setText("娱 乐");
tab.setTabListener(mTabListener);
getActivity().getActionBar().addTab(tab);
}
private final TabListener mTabListener = new TabListener() {
private final static String TAG = "TabListener";

@Override
public void onTabReselected(Tab tab, android.app.FragmentTransaction ft) {
Log.d(TAG, "onTabReselected");
}

@Override
public void onTabSelected(Tab tab, android.app.FragmentTransaction ft) {
Log.d(TAG, "onTabSelected()");
if (mViewPager != null)
mViewPager.setCurrentItem(tab.getPosition());
}

@Override
public void onTabUnselected(Tab tab, android.app.FragmentTransaction ft) {
Log.d(TAG, "onTabUnselected()");
}
};
class TestPagerListener implements OnPageChangeListener {
@Override
public void onPageScrollStateChanged(int arg0) {
}

@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}

@Override
public void onPageSelected(int arg0) {
getActivity().getActionBar().selectTab(getActivity().getActionBar().getTabAt(arg0));
}
}


}


TestViewPager.java
package com.example.fragmenttest;

import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;

public class TestViewPage extends ViewPager{

public TestViewPage(Context context) {
super(context);
}

public TestViewPage(Context context, AttributeSet attrs) {
super(context, attrs);
}
}




TestViewPagerAdapter.java
package com.example.fragmenttest;

import com.example.fragment.Fragment1;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

public class TestViewPagerAdapter extends FragmentPagerAdapter {

public TestViewPagerAdapter(FragmentManager fm) {
super(fm);
// TODO Auto-generated constructor stub
}

@Override
public Fragment getItem(int arg0) {
// TODO Auto-generated method stub
switch (arg0) {
case Fragment1.TAB_INDEX_TAB_1:
return new Tab1Fragment();

case Fragment1.TAB_INDEX_TAB_2:
return new Tab2Fragment();

case Fragment1.TAB_INDEX_TAB_3:
return new Tab3Fragment();

case Fragment1.TAB_INDEX_TAB_4:
return new Tab4Fragment();

case Fragment1.TAB_INDEX_TAB_5:
return new Tab5Fragment();
}

throw new IllegalStateException("No fragment at position " + arg0);
}

@Override
public int getCount() {
// TODO Auto-generated method stub
return Fragment1.TAB_COUNT;
}
}





2的代码
package com.example.fragment;

import com.example.fragmenttest.R;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;


public class Fragment2 extends Fragment{
private View view ;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
if(view==null){
view = inflater.inflate(R.layout.fragment2, null);
}
ViewGroup p = (ViewGroup) view.getParent();
if(p!=null){
p.removeAllViews();
}
init(view);
return view;

}

private void init(View view) {
getActivity().getActionBar().removeAllTabs();
}
}
...全文
171 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Vincent_1216 2015-12-11
  • 打赏
  • 举报
回复
引用 1楼bdmh 的回复:

getActivity().getActionBar().hide();	
如果我在第二个fragment里面想重新定义几个tab。用show.hide可以实现吗??是不是还要怎么判断一下再分别show hide
Vincent_1216 2015-12-11
  • 打赏
  • 举报
回复
引用 2楼sanxiaochengyu 的回复:
同意楼上

 @Override
        public void onPageSelected(int arg0) {
            if(arg0==1)
                getActivity().getActionBar().hide();
            else
                getActivity().getActionBar().show();
            getActivity().getActionBar().selectTab(getActionBar().getTabAt(arg0));
        }
如果之后我想在第二个fragment里面想重新定义几个tab。用show.hide可以实现吗??
sanxiaochengyu 2015-12-11
  • 打赏
  • 举报
回复
同意楼上

 @Override
        public void onPageSelected(int arg0) {
            if(arg0==1)
                getActivity().getActionBar().hide();
            else
                getActivity().getActionBar().show();
            getActivity().getActionBar().selectTab(getActionBar().getTabAt(arg0));
        }
bdmh 2015-12-11
  • 打赏
  • 举报
回复

getActivity().getActionBar().hide();	

80,337

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧