Объект доступа Viewpager - PullRequest
       4

Объект доступа Viewpager

0 голосов
/ 29 октября 2018

с ViewPager в MainActivity. У меня есть событие pagechangelistener, мне нужно изменить поле редактирования на каждой странице / фрагменте в зависимости от номера страницы. например, окно редактирования, чтобы показать страницу 1, страницу 2 и т. д. на каждой странице. код, управляющий этим, должен быть в pagechangelistener. Однако текст buttonvvv не обновляется до ssssss.

import android.app.Activity;
import android.content.Context;
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.os.Bundle;

import com.ogaclejapan.smarttablayout.SmartTabLayout;
import com.wuhenzhizao.titlebar.widget.CommonTitleBar;


import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;


public class MainActivity extends AppCompatActivity {
    ViewPager viewPager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initSmartTab();


    }


    private void initSmartTab() {
        CommonTitleBar titleBar = (CommonTitleBar) findViewById(R.id.titlebar);
        SmartTabLayout layout = (SmartTabLayout) titleBar.getCenterCustomView().findViewById(R.id.tab_list);
          viewPager = (ViewPager) findViewById(R.id.viewPager);
        viewPager.setAdapter(new TabFragmentAdapterTora(getSupportFragmentManager()));
        layout.setViewPager(viewPager);


        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            public void onPageScrollStateChanged(int state) {}
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}

            public void onPageSelected(int position) {
                // Check if this is the page you want.
                Toast.makeText(MainActivity.this, String.valueOf(position) , Toast.LENGTH_SHORT).show();
               View rr= viewPager.getRootView();
                Button b =(Button)  rr.findViewById(R.id.buttonvvv);
                b.setText("ssssssss");
            }
        });
    }

    public class TabFragmentAdapterTora extends FragmentPagerAdapter {
        private String[] tabs = {"جديدxx", "فعال", "تحميل"};

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

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

        @Override
        public Fragment getItem(int position) {
            return new TabFragment();
        }

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

---- класс TabFragment ------------

public class TabFragment extends Fragment {

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_tab, null);
    }
}

------------- Внешние библиотеки -----------------------

   implementation ('com.ogaclejapan.smarttablayout:library:1.6.1')  
     implementation 'com.wuhenzhizao:titlebar:1.1.3'

Спасибо за поддержку

1 Ответ

0 голосов
/ 29 октября 2018

reedit: Измените свой код следующим фрагментом кода:

public class TabFragmentAdapterTora extends FragmentPagerAdapter {
    private String[] tabs = {"جديدxx", "فعال", "تحميل"};
    private TabFragment fragment = new TabFragment();
    public TabFragmentAdapterTora(FragmentManager fm) {
        super(fm);
    }

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

    @Override
    public Fragment getItem(int position) {
        //do not create new object for your fragment
        return fragment;
    }

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

}

...