0

Я новичок в android. У меня есть скользящая компоновка вкладок и viewpager с фрагментом. Я установил базовую связь между ними для переключения вкладок на счет 5 (т. Е. 5 вкладок). Проблема заключается в том, что в каждой из этих вкладок я хочу заполнить список с помощью simplecursoradapter, для чего мне нужна позиция каждого фрагмента так что я мог бы заполнить его соответствующим образом. У меня есть позиция в классе адаптера фрагментов, но я не могу передать его основной деятельности. Кроме того, как я могу получить доступ к DBadapter внутри моего класса фрагмента, чтобы заполнить список из базы данных? или есть ли другой способ сделать это? Ниже мой код. Любая помощь приветствуется. Заранее спасибо.Как получить позицию фрагмента в Activity?

public class myFragment extends Fragment{ 
    private ListView mainList; 
    public static myFragment getInstance(int position){ 
     myFragment MyFragment = new myFragment(); 
     Bundle args = new Bundle(); 
     args.putInt("position", position); 
     MyFragment.setArguments(args); 

     return MyFragment; 
    } 
    @Override 
    public View onCreateView(LayoutInflater inflater, 
      @Nullable ViewGroup container, 
      @Nullable Bundle savedInstanceState) { 

      View layout = inflater.inflate(R.layout.fragment_main_list,container, false); 
      mainList = (ListView)layout.findViewById(R.id.mainListView); 
      Bundle bundle = getArguments(); 

      if(bundle!=null){ 
       if(bundle.getInt("position")==0){ 
       mainList.setBackgroundColor(getResources().getColor(R.color.primary500)); 
      } 
      else if(bundle.getInt("position")==1){ 
       mainList.setBackgroundColor(getResources().getColor(R.color.primary100)); 
      } 
      else if(bundle.getInt("position")==2){ 
       mainList.setBackgroundColor(getResources().getColor(R.color.primary700)); 
      } 
      else if(bundle.getInt("position")==3){ 
       mainList.setBackgroundColor(getResources().getColor(R.color.accent)); 
      } 
      else if(bundle.getInt("position")==4){ 
       mainList.setBackgroundColor(getResources().getColor(R.color.black)); 
      } 

      } 
      return layout; 
    } 

} 


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

public class MainActivity extends ActionBarActivity { 
private Toolbar toolbar; 
private ViewPager mPage; 
private SlidingTabLayout mTabs; 
DBadapter myDb; 

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

    toolbar = (Toolbar)findViewById(R.id.app_bar); 
    mPage = (ViewPager)findViewById(R.id.pager); 
    mTabs = (SlidingTabLayout)findViewById(R.id.tabs); 
    mFab = (FloatingActionButton)findViewById(R.id.fab); 

    setSupportActionBar(toolbar); 
    mPage.setAdapter(new myPagerAdapter(getSupportFragmentManager())); 
    mTabs.setViewPager(mPage); 
} 
public class myPagerAdapter extends FragmentPagerAdapter{ 
     String[] tabs; 
     public myPagerAdapter(FragmentManager fm) { 
      super(fm); 
      tabs = getResources().getStringArray(R.array.tabs); 
     } 

     @Override 
     public Fragment getItem(int position) { 
      myFragment MyFragment = myFragment.getInstance(position); 
      return MyFragment; 
     } 

     @Override 
     public CharSequence getPageTitle(int position) { 
      return tabs[position]; 
     } 

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

    } 

ответ

0

Используйте этот метод:

mPage.setOnPageChangeListener(new SimpleOnPageChangeListener() { 

      @Override 
      public void onPageSelected(int pos) { 
       // pos is the position of fragment that app showing 
     }); 

UPDATE
на ваш взгляд пейджера адаптер:

public Fragment getItem(int position) { 
    return new myFragment(position); 
} 

И в своем классе фрагмент:

public class myFragment extends Fragment{ 

private int pos 
public void myFragment(int position){ 
    this.pos = position; 
} 
// other code of your class 
+0

Я использовал его. Но я не могу переключаться между вкладками. Застрял на 1-й позиции. Я не использовал никаких условий для проверки позиции. Просто сообщение тоста, чтобы проверить позицию. Но застрял. Я не мог перемещаться между вкладками. Но положение меняется при прохождении. – gogs09

+0

Что случилось, когда вы промахнулись влево или напишите? ничего изменить или изменить, но отобразить свой первый фрагмент? –

+0

Позиция, которую я показываю через тост, меняется. Но он отображает только первый фрагмент. – gogs09

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