Элемент в ViewPager исчезает и появляется снова при перелистывании на страницу - PullRequest
0 голосов
/ 04 марта 2019

Проблема

У меня есть ViewPager с 3 fragments.В одном из fragments у меня есть 2 Buttons, что у меня setVisibility до VISIBLE.Это показывает две кнопки.Проблема в том, что, когда я пролистываю на другую страницу и затем возвращаюсь на страницу с кнопками, кнопки исчезают на долю секунды, а затем снова появляются.

Я не могу понять это, я хотел бы, чтобы кнопки отображались постоянно.Если это что-то значит, у меня есть кнопки, нарисованные в файле макета XML с видимостью, установленной на GONE.Если есть способ лучше, пожалуйста, дайте мне знать.Спасибо!


Фрагмент в коде вопроса

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_recycler, container, false);

    /* Removed unnecessary code */

    // If this is the Negative fragment then add the buttons
    if(VIEW_TYPE == Constants.TYPE_NEGATIVE) {
        LinearLayout buttonsLayout = view.findViewById(R.id.ButtonsLayout);
        buttonsLayout.setVisibility(View.VISIBLE);

        Button addButton = view.findViewById(R.id.addThought);
        addButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                addNewThought();
            }
        });

        Button remButton = view.findViewById(R.id.delThought);
        remButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                deleteLastThought();
            }
        });
    }

Код ViewPager

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

    /*
        Set up the ViewPager. Finds its view, sets up the adapter (which sets up the associated
        pages), sets up the necessary settings for it to work appropriately, and sets up its
        page ticker
     */
    // Find the ViewPagers and TabLayouts view
    mViewPager = findViewById(R.id.ViewPager);
    TabLayout tabLayout = findViewById(R.id.tabDots);
    // Define the ViewPagers adapter
    mViewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
    // Keeping all tabs in memory to prevent refreshing view. ABSOLUTELY NEEDED
    mViewPager.setOffscreenPageLimit(ViewPagerAdapter.NUM_OF_TABS); // Equal to 3
    // Set ViewPagers adapter
    mViewPager.setAdapter(mViewPagerAdapter);
    // Set up TabLayout with View Pager
    tabLayout.setupWithViewPager(mViewPager, true);
}

1 Ответ

0 голосов
/ 04 марта 2019

Удалите видимость из макета XML и в коде выполните следующие действия:

Отредактировано

if(VIEW_TYPE == Constants.TYPE_NEGATIVE) { 
LinearLayout buttonsLayout =     view.findViewById(R.id.ButtonsLayout);
buttonsLayout.setVisibility(View.VISIBLE);}else{
buttonLayout.setVisibility(View.GONE);}
...