2

Я работаю над viewPager с фрагментом, и он отлично работал, прежде чем я начал внедрять разрешение во время выполнения для другого модуля.Фрагмент становится пустым после запроса разрешения на выполнение.

Это мой адаптер ViewPager.

public class DashboardAdapter extends FragmentStatePagerAdapter { 


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

    @Override 
    public Fragment getItem(int position) { 

     switch (position) { 
     case 0: 
      return FunkyInboxFragment.newInstance(position); 
     case 1: 
      return FunkyTakePhotoFragment.newInstance(position); 
     case 2: 
      return FunkyAddFriendsFragmnet.newInstance(position); 
     default: 
      return FunkyTakePhotoFragment.newInstance(position); 
     } 
    } 

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

    @Override 
    public Object instantiateItem(ViewGroup container, int position) { 
    Fragment fragment = (Fragment) super.instantiateItem(container, position); 
     return fragment; 
    } 


    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 
    } 

} 

Здесь разные фрагменты требовали разных разрешений, поэтому я создал для него общий класс активности. Он работает в том же фрагменте, но после запроса разрешения, когда я прокручиваю viewPager фрагмент после следующего фрагмента и фрагмент перед тем, как предыдущий фрагмент станет пустым. я сделал все возможные изменения в адаптере, но не получил правильного результата.

Пожалуйста, помогите с ним!

+0

Пожалуйста мимо код, на котором вы дали разрешение. – Mukesh

+0

И любой фрагмент кода. – NovusMobile

+0

В приведенных ниже комментариях я упомянул код. Пожалуйста, изучите его. Благодарю. – Neo

ответ

0
@Override 
public int getCount() { 
return 2; 
} 

// пробуем это может быть это работает

+0

Мне нужно 3 фрагмента. поэтому я положил getCount() - возвращает 3; – Neo

0
package com.example.madhavgor.actionbardemolast; 

import android.os.Bundle; 
import android.support.design.widget.TabLayout; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 

import java.util.ArrayList; 
import java.util.List; 

public class MainActivity extends AppCompatActivity { 
private Toolbar toolbar; 
private TabLayout tabLayout; 
private ViewPager viewPager; 
private int[] tabIcons = { 
     R.mipmap.ic_launcher,R.mipmap.ic_launcher_bluetooth 
}; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    //toolbar = (Toolbar) findViewById(R.id.toolbar); 
    //setSupportActionBar(toolbar); 

getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

    viewPager = (ViewPager) findViewById(R.id.viewPager); 
    setupViewPager(viewPager); 

    tabLayout = (TabLayout) findViewById(R.id.tabs); 
    tabLayout.setupWithViewPager(viewPager); 
    setupTabIcons(); 
} 

private void setupTabIcons() { 
    tabLayout.getTabAt(0).setIcon(tabIcons[0]); 
    tabLayout.getTabAt(1).setIcon(tabIcons[1]); 
} 

private void setupViewPager(ViewPager viewPager) { 
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
    adapter.addFragment(new OneFragment(), "ONE"); 
    adapter.addFragment(new SecondFragment(), "BLUETOOTH"); 
    adapter.addFragment(new ThirdFragment(), "THREE"); 
    viewPager.setAdapter(adapter); 
} 

class ViewPagerAdapter extends FragmentPagerAdapter { 
    private final List<Fragment> mFragmentList = new ArrayList<>(); 
    private final List<String> mFragmentTitleList = new ArrayList<>(); 

    public ViewPagerAdapter(FragmentManager manager) { 
     super(manager); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return mFragmentList.get(position); 
    } 

    @Override 
    public int getCount() { 
     return mFragmentList.size(); 
    } 

    public void addFragment(Fragment fragment, String title) { 
     mFragmentList.add(fragment); 
     mFragmentTitleList.add(title); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return mFragmentTitleList.get(position); 
    } 
} 

}

// передать этот код .... может быть это поможет вам ..

+0

Спасибо Мадхаву, но, как и в случае с adpter, я думаю, что он такой же, как и у вас, поскольку вместо этого я использовал FragmentStatePagerAdapter. – Neo

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