Содержимое всех вкладок исчезает после перехода на страницу, отличную от страницы с вкладками, и возврата - PullRequest
0 голосов
/ 11 мая 2018

У меня есть код, который создает вкладки динамически.

Это мой MyActivity.java:

public class MyActivity extends AppCompatActivity {
.
.
.
.

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


        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);


        tabLayout = (TabLayout) findViewById(R.id.tabLayout);


        try {
            JSONObject jsonObj = new JSONObject(page);

            JSONArray jssArray = jsonObj.getJSONArray("AuditQuestions");
            int jsonArrLength = jssArray.length();

            no_of_categories = jsonArrLength;

            for (int i = 0; i < jsonArrLength; i++) {
                JSONObject jsonChildObj = jssArray.getJSONObject(i);


                categoryName.add(jsonChildObj.getString("categoryName"));


            }

        } catch (JSONException e) {
            e.printStackTrace();
        }


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


        tabLayout = (TabLayout) findViewById(R.id.tabLayout);
        viewPager = (ViewPager) findViewById(R.id.pager);

        viewPager.setOffscreenPageLimit(no_of_categories);

        setupViewPager(viewPager);
        tabLayout.setupWithViewPager(viewPager);
        tabLayout.setOnTabSelectedListener(onTabSelectedListener(viewPager));

    }

    private void setupViewPager(ViewPager viewPager) {
        Pager adapter = new Pager(getSupportFragmentManager());
        for (int i = 0; i < no_of_categories; i++) {
            Tab1 tab1 = new Tab1();
            adapter.addFragment(tab1, categoryName.get(i));

            viewPager.setAdapter(adapter);
            viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
            onTabSelectedListener(viewPager);
        }
    }

    private TabLayout.OnTabSelectedListener onTabSelectedListener(final ViewPager pager) {
        return new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                pager.setCurrentItem(tab.getPosition());
            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {

            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {

            }
        };
    }

}

Это мой адаптер Pager.java:

public class Pager extends FragmentStatePagerAdapter  {
    int mNumOfTabs;
    Fragment fragment = null;

    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();

    public Pager(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);
    }
}

При удалении этой строки из MyActivity.java, содержимогоесть ли во вкладках даже после перехода со страницы вкладок и возврата:

    viewPager.setOffscreenPageLimit(no_of_categories);

Но это не решает проблему, потому что содержимое, отображаемое на вкладках, несовместимо, т. е. содержимое, которое должно появитьсяв одной вкладке появляется на другой вкладке.

Я пытался решить ее, но безуспешно.Может быть, это связано с жизненным циклом фрагментов?

Как мне решить эту проблему?

Не удалось найти никакого решения для этого.Пожалуйста, помогите.

Любая помощь будет оценена.

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...