2014-09-25 3 views
1

У меня есть скользящая вкладка с тремя фрагментами в ней. Первый фрагмент имеет кнопку, которая должна открыть фрагмент под той же скользящей вкладкой. У меня есть следующий вид:Вызов фрагмента из другого фрагмента

https://drive.google.com/file/d/0B1QZMHJgpviceXlOWWFUdHdnTTQ/edit?usp=sharing

Окончательный вид я хочу на нажатие кнопки сверху выглядит следующим образом:

https://drive.google.com/file/d/0B1QZMHJgpvicZzlSeXhLTFFlNE0/edit?usp=sharing

Я попытался с помощью замены, но фрагменты накладываются друг на друга.

Код для 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 

} 

} 

адаптер

public class TabsPagerAdapter extends FragmentPagerAdapter { 
public TabsPagerAdapter(FragmentManager fm) { 
    super(fm); 
    Log.d("adapter constructor", "started"); 
} 

@Override 
public Fragment getItem(int index) { 
    Log.d("adapter", "started"); 
    switch (index) { 
    case 0: 
     // Top Rated fragment activity 
     return new Homefragment(); 
    case 1: 
     // Games fragment activity 
     return new Recentfragment(); 
    case 2: 
     // Movies fragment activity 
     return new Searchfragment(); 
    } 
    Log.d("adapter", "ended"); 
    return null; 
} 

@Override 
public int getCount() { 
    // get item count - equal to number of tabs 
    return 3; 
} 
} 

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; 
} 
} 

У меня есть кнопка в этом фрагменте. Я хочу, чтобы кнопка щелкнула, чтобы открыть фрагмент. Любая помощь?

+0

Можете ли вы разместить здесь свой код вместо ссылки на него? – RyPope

+0

новый аккаунт. плюс это скриншот фрагментов – Arya

+0

Любая учетная запись может добавлять код на свой вопрос, это всего лишь текст. Давайте посмотрим, что у вас есть, и отработайте это. – RyPope

ответ

0

Не видя кода, я не могу сказать окончательно, но вы можете попробовать что-то вроде этого:

// Create new fragment and transaction 
Fragment newFragment = new ExampleFragment(); 
FragmentTransaction transaction = getFragmentManager().beginTransaction(); 

// Replace whatever is in the fragment_container view with this fragment, 
// and add the transaction to the back stack 
transaction.replace(R.id.fragment_container, newFragment); 
transaction.addToBackStack(null); 

// Commit the transaction 
transaction.commit(); 

Отъезд tutorial больше.

+0

Я попробовал это. Эти два фрагмента перекрывают друг друга. – Arya

Смежные вопросы