2013-04-10 140 views
0

我正在使用ViewPager並使用FragmentPage適配器在片段活動中加載多個片段。我想要訪問包含ImageButton的片段。任何一個可以幫助我從片段活動中的片段訪問Imagebutton如何從片段活動中的片段訪問ImageButton?

這裏是我的代碼:

片段活動

 /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main_gallery); 
     mAdapter = new MyAdapter(getSupportFragmentManager()); 

     mPager = (CustomPager) findViewById(R.id.pager); 
     mPager.setAdapter(mAdapter); 
     mPager.setOnPageChangeListener(this); 

     pagerLayout = (LinearLayout) findViewById(R.id.tour_pager_lay); 
     mPageControl = (PageControl)findViewById(R.id.horizontal_pager); 
     mPageControl.addPagerControl(3); 
    } 

    public static class MyAdapter extends FragmentPagerAdapter { 
     public MyAdapter(FragmentManager fm) { 
      super(fm); 
     } 

     @Override 
     public int getCount() { 
      return 3; 
     } 

     @Override 
     public Fragment getItem(int position) { 
      switch (position) { 
      case 0: 
       return new ImageFragment(R.drawable.landing_logo); 
      case 1: 
       return new ImageFragment(R.drawable.welcome_postit); 
      case 2: 

       return new LoginFragment(); 
      case 4: 
       return new RegisterFragment(); 

      default: 
       return null; 
      } 
     } 
    } 

回答

1

假設你的ImageButton是您RegisterFragment,那麼你可以做:

RegisterFragment tmp = ((RegisterFragment) ((MyAdapter) mPager.getAdapter()).instantiateItem(mPager, 4)); 

//your ImageButton should be public or you can create a getter or something, I assume that it's public 
tmp.imageButton.setText("foo"); 
+0

它給我的NullPointerException :( – Newts 2013-04-10 05:46:22

+0

是的,我看到了,這是因爲你的代碼中有錯誤,我沒有看到它,它在你的適配器中getItem中遇到HOD。你有'情況4:返回新的RegisterFragment();'但你只有3頁,所以它應該是'情況3:...'。在我的代碼中,你應該將'instantiateItem(mPager,4)'中的參數改爲'instantiateItem(mPager,3)'。 – 2013-04-10 05:50:06

+0

我這樣做,它再次給我同樣的錯誤 – Newts 2013-04-10 05:57:25