0

Прежде всего, вы должны простить меня, потому что мой английский очень плохой.
Я попытаюсь объяснить проблему:
У меня есть ActionBarActivity с двумя страницами (ViewPager).
На каждой странице есть Fragment.
Моя проблема: как использовать элементы каждого Fragment из этого ActionBarActivity? Мой код заключается в следующем:Как управлять некоторыми элементами фрагмента в другом классе из ActionBarActivity, Android

ActionBarActivity.java

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.manage_devices); 


     mActionbar = getSupportActionBar(); 
     mActionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
     mPager = (ViewPager) findViewById(R.id.pager); 
     FragmentManager fm = getSupportFragmentManager(); 
     MyFragmentPagerAdapter fragmentPagerAdapter = new MyFragmentPagerAdapter(fm); 
     mPager.setAdapter(fragmentPagerAdapter); 
     mActionbar.setDisplayShowTitleEnabled(true); 
     ActionBar.TabListener tabListener = new ActionBar.TabListener() { 
      @Override 
      public void onTabUnselected(Tab tab, FragmentTransaction ft) {} 
      @Override 
      public void onTabSelected(Tab tab, FragmentTransaction ft) { 
       mPager.setCurrentItem(tab.getPosition());} 
      @Override 
      public void onTabReselected(Tab tab, FragmentTransaction ft) {} 
     }; 
     mActionbar.addTab(mActionbar.newTab().setText("SENSORS").setTabListener(tabListener)); 
     mActionbar.addTab(mActionbar.newTab().setText("SIGNALS").setTabListener(tabListener)); 


     /** Defining a listener for pageChange */ 
     ViewPager.SimpleOnPageChangeListener pageChangeListener = new ViewPager.SimpleOnPageChangeListener(){ 
       **@Override 
       public void onPageSelected(int position) { 
         super.onPageSelected(position); 
         if(position == 0 & !hecho){ 
         currView = mPager.getChildAt(mPager.getCurrentItem()); 
         DevicesListView = (ListView) currView.findViewById(R.id.DevicesListView); 
         DevicesListView.setAdapter(DevicesAdapter); 
         DevicesListView.setOnItemClickListener(DeviceOnItemClickListener); 
         hecho = true;} 
         else if(!hecho){ 
          mGraph = (GraphView)findViewById(R.id.graph); 
         } 

         mActionbar.setSelectedNavigationItem(position); 
       }** 

     }; 
     /** Setting the pageChange listener to the viewPager */ 
     mPager.setOnPageChangeListener(pageChangeListener); 
} 

Чтобы получить Listview, я к нему доступ в OnPageSelected.
Но это плохо для меня, потому что мне нужно изменить страницу для получения Listview и построить ее.

ManageFragment.java

public class ManageFragment extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     Log.d("","Entra"); 
     return inflater.inflate(R.layout.manage_fragment, null); 
    } 
} 

Мой Listview находится в manage_fragment макете.
Это может помочь: Illustration

спасибо!

+0

Вы можете получить доступ к фрагментам с помощью 'mPager.getAdapter(). GetItem (position)' –

+0

Спасибо, но мне нужно другое дело – user2600052

ответ

0

Если ваш фрагмент уже создан, вы можете просто использовать findViewById() в своей деятельности и просто найти нужное представление.

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

@Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 
     try { 
      mListener = (OnViewCreatedListener) activity; 
     } catch (ClassCastException e) { 
      throw new ClassCastException(activity.toString() + " must implement OnArticleSelectedListener"); 
     } 
    } 

И затем вызвать интерфейс после onCreateView фрагмента.

+0

Спасибо, но это моя проблема. Я не знаю, когда мой фрагмент уже создан. Когда я вызываю listview.setAdapter() после findViewById(), я получаю исключение NullPointerException. – user2600052

+0

См. Обновление. –

+0

Работайте отлично, большое спасибо !!! – user2600052

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

  • Нет связанных вопросов^_^