代码之家  ›  专栏  ›  技术社区  ›  Siriann

从动态片段中设置选项卡标题

  •  0
  • Siriann  · 技术社区  · 8 年前

    我有一个活动(MainActivity),它有五个选项卡,每个选项卡包含一个片段。每个片段包含一个 EditText 小装置。当我在活动片段的类中更改EditText的文本时,我想设置活动选项卡的标题。我怎么能在飞行中做到?

    主要活动:

    public class MainActivity extends AppCompatActivity {
        private SectionsPagerAdapter mSectionsPagerAdapter;
        private ViewPager mViewPager;
    
        ImageView imageView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
            mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
    
            mViewPager = (ViewPager) findViewById(R.id.container);
            mViewPager.setAdapter(mSectionsPagerAdapter);
    
            TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
            tabLayout.setupWithViewPager(mViewPager);
    
            FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
            fab.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                            .setAction("Action", null).show();
                }
            });
    
        }
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.menu_main, menu);
            return true;
        }
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            int id = item.getItemId();
            if (id == R.id.action_settings) {
                return true;
            }
    
            return super.onOptionsItemSelected(item);
        }
    }
    

    第PAGERADAPTER节:

    public class SectionsPagerAdapter extends FragmentPagerAdapter {
    
        public SectionsPagerAdapter(FragmentManager fm) {
            super(fm);
        }
    
        @Override
        public Fragment getItem(int position) {
            switch (position){
                case 0:
                    Tab1 tab1 = new Tab1();
                    return tab1;
                case 1:
                    Tab2 tab2 = new Tab2();
                    return tab2;
                case 2:
                    Tab3 tab3 = new Tab3();
                    return tab3;
                case 3:
                    Tab4 tab4 = new Tab4();
                    return tab4;
                case 4:
                    Tab5 tab5 = new Tab5();
                    return tab5;
                default:
                    return null;
            }
        }
    
        @Override
        public int getCount() {
            // Show 5 total pages.
            return 5;
        }
    
        @Override
        public CharSequence getPageTitle(int position) {
            switch (position) {
                case 0:
                    return "title1";
                case 1:
                    return "title2";
                case 2:
                    return "title3";
                case 3:
                    return "title4";
                case 4:
                    return "title5";
            }
            return null;
        }
    }
    

    表1:

    public class Tab1 extends Fragment {
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.tab1, container, false);
            return rootView;
        }
    }
    

    编辑文本 在Tab1上,我开始键入,它将第一个选项卡的标题从“title1”更改为我键入的字符串。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Aalap Patel    8 年前

    从edittext中,您应该使用 addTextChangedListener EditText TextWatcher 实例来动态更改标题。请参阅此代码。

    editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    
            }
    
            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                //this is your tab index you want to change title of..
                tabLayout.getTabAt(1).setText(charSequence);
            }
    
            @Override
            public void afterTextChanged(Editable editable) {
    
            }
        });
    

    希望这有帮助。。