2014-09-25 113 views
1

我有一個包含3個片段的slinding選項卡。第一個片段有一個按鈕,應該在同一個滑動標籤下打開一個片段。從一個按鈕上的另一個片段調用片段點擊

我嘗試使用替換,但片段相互重疊。

爲fragmentactivity,適配器和一個片段的代碼如下:

public class Slidingtab extends FragmentActivity implements 
ActionBar.TabListener{ 

private ViewPager viewPager; 
private TabsPagerAdapter mAdapter; 
private ActionBar actionBar; 
// Tab titles 
private String[] tabs = { "Post", "Recent", "Search" }; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_slidingtab); 
    Log.d("Slding tab", "started"); 
    // Initilization 
    viewPager = (ViewPager) findViewById(R.id.pager); 
    actionBar = getActionBar(); 
    mAdapter = new TabsPagerAdapter(getSupportFragmentManager()); 

    viewPager.setAdapter(mAdapter); 
    actionBar.setHomeButtonEnabled(false); 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);   

    // Adding Tabs 
    for (String tab_name : tabs) { 
     actionBar.addTab(actionBar.newTab().setText(tab_name) 
       .setTabListener((TabListener) this)); 
    } 

    /** 
    * on swiping the viewpager make respective tab selected 
    * */ 
    viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 

     @Override 
     public void onPageSelected(int position) { 
      // on changing the page 
      // make respected tab selected 
      actionBar.setSelectedNavigationItem(position); 
     } 

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

     @Override 
     public void onPageScrollStateChanged(int arg0) { 
     } 
    }); 
    Log.d("Slding tab", "ended"); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.slidingtab, menu); 
    return true; 
} 

@Override 
public void onTabReselected(Tab tab, FragmentTransaction ft) { 
    // TODO Auto-generated method stub 

} 

@Override 
public void onTabSelected(Tab tab, FragmentTransaction ft) { 
    // TODO Auto-generated method stub 
    viewPager.setCurrentItem(tab.getPosition()); 

} 

@Override 
public void onTabUnselected(Tab tab, FragmentTransaction ft) { 
    // TODO Auto-generated method stub 

} 

} 

HomeFragment

public class Homefragment extends Fragment { 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    Log.d("Home fragment", "started"); 
    View rootView = inflater.inflate(R.layout.activity_homefragment, container, false); 
    Log.d("Home fragment", "ended"); 
    return rootView; 
} 
} 

我在這個片段的按鈕。我想按鈕點擊打開一個片段。

而且

Fragment newFragment = new ExampleFragment(); 
FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
transaction.replace(R.id.fragment_container, newFragment); 
transaction.addToBackStack(null); 
transaction.commit(); 

我想這一點。這兩個片段然後互相重疊

任何幫助嗎?

+0

看看這個http://stackoverflow.com/questions/18492895/fragment-overlaps-sometimes-when-switching-tabs – 2014-09-25 17:48:57

回答

0

您必須添加transaction.addToBackStack(null);在提交之前。它避免重疊片段。

相關問題