2014-01-18 29 views
0

我的應用程序使用片段和滑動來導航不同的頁面。我想在每個片段活動上都有一個圖像按鈕,以便在按下第一個活動時應該可用。我怎樣才能做到這一點。我試過viewpager.setcurrentitem選項,但它只在主要活動中可用。並在片段活動viewpager不可用。我知道有一種方法可以使用sethome按鈕的android默認屬性。但我想在每個片段中有一個圖像按鈕。 這是我的主要活動在每個片段上設置主頁按鈕

public class MainActivity extends FragmentActivity implements 
    ActionBar.TabListener { 

SectionsPagerAdapter mSectionsPagerAdapter; 
ViewPager mViewPager; 

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

    // Set up the action bar. 
    final ActionBar actionBar = getActionBar(); 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

    // Create the adapter that will return a fragment for each of the three 
    // primary sections of the app. 
    mSectionsPagerAdapter = new SectionsPagerAdapter(
      getSupportFragmentManager()); 

    // Set up the ViewPager with the sections adapter. 
    mViewPager = (ViewPager) findViewById(R.id.pager); 
    mViewPager.setAdapter(mSectionsPagerAdapter); 

    // When swiping between different sections, select the corresponding 
    // tab. We can also use ActionBar.Tab#select() to do this if we have 
    // a reference to the Tab. 
    mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { 
       @Override 
       public void onPageSelected(int position) { 
        actionBar.setSelectedNavigationItem(position); 
       } 
      }); 


    Tab tab = actionBar.newTab().setIcon(R.drawable.prf).setText(getString(R.string.title_section1)).setTabListener(this); 
    actionBar.addTab(tab, true); 

    tab = actionBar.newTab().setIcon(R.drawable.pack).setText(getString(R.string.title_section2)).setIcon(R.drawable.pack).setTabListener(this); 
    actionBar.addTab(tab); 

    tab = actionBar.newTab().setIcon(R.drawable.call).setText(getString(R.string.title_section3)).setTabListener(this); 
    actionBar.addTab(tab); 

    tab = actionBar.newTab().setIcon(R.drawable.prom).setText(getString(R.string.title_section4)).setTabListener(this); 
    actionBar.addTab(tab); 

    tab = actionBar.newTab().setIcon(R.drawable.infoin).setText(getString(R.string.title_section5)).setTabListener(this); 
    actionBar.addTab(tab); 
} 

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

@Override 
public void onTabSelected(ActionBar.Tab tab,FragmentTransaction fragmentTransaction) { 
    // When the given tab is selected, switch to the corresponding page in 
    // the ViewPager. 
    mViewPager.setCurrentItem(tab.getPosition()); 
} 

@Override 
public void onTabUnselected(ActionBar.Tab tab,FragmentTransaction fragmentTransaction) { 
} 

@Override 
public void onTabReselected(ActionBar.Tab tab,FragmentTransaction fragmentTransaction) { 
} 

/** 
* A {@link FragmentPagerAdapter} that returns a fragment corresponding to 
* one of the sections/tabs/pages. 
*/ 
public class SectionsPagerAdapter extends FragmentPagerAdapter { 

    public SectionsPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     switch (position) { 
     case 0 : 
      return new Home(); 
     case 1: 
      return new info(); 
     case 2: 
      return new Plan(); 
     } 
     return null; 
    } 

    @Override 
    public int getCount() { 
     // Show 3 total pages. 
     return 3; 
    } 
} 
+1

看來你的問題似乎是你不知道碎片如何與活動交流,反之亦然。 閱讀此:http://developer.android.com/training/basics/fragments/communicating.html然後它會很容易地添加您的主頁按鈕到所有的片段,並使用您的MainActivity中的viewPager.setCurrentItem() 。 – FWeigl

回答

0

使用回調機制,通過接口和發送消息回活動要在的ImageButton的點擊做什麼。同樣的機制對於彼此之間的碎片交流是有利的。