简体   繁体   English

选项卡已选择计数器的TabLayout

[英]TabLayout with Tab selected counter

What I would like to accomplish is: 我想完成的是:

When ever the user clicks on Tab 1, it should increment a counter and display it on the fragment. 用户单击选项卡1时,应该增加一个计数器并将其显示在片段上。 I originally thought about, using tabLayout.setOnTabSelectedListener how ever this did not work as it gave me the following error; 我最初想到的是,使用tabLayout.setOnTabSelectedListener却无法正常工作,因为它给了我以下错误; "setOnTabSelectedListener is deprecated . I also tried doing getId however that did not work either as I was unable to register when the user clicked the tab. "setOnTabSelectedListener is deprecated 。我也尝试过执行getId但是由于用户单击选项卡时无法注册,所以该操作也不起作用。

Please help! 请帮忙!

When ever the user clicks Tanav Sharma it should increment a counter that is displayed. 每当用户单击Tanav Sharma它都应增加显示的计数器。

在此处输入图片说明

package tanav.sharma;

import android.support.v4.app.Fragment;
import android.content.DialogInterface;
import android.support.design.widget.TabLayout;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import java.util.ArrayList;
import java.util.List;

import tanav.sharma.R;
import tanav.sharma.OneFragment;
import tanav.sharma.TwoFragment;

import android.view.View;

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

public class TanavActivity extends AppCompatActivity {

    private Toolbar toolbar;
    private TabLayout tabLayout;
    private ViewPager viewPager;
    private int[] tabIcons = {
            R.drawable.ic_action_pro,
            R.drawable.ic_action_web
    };

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

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

        /**
         * This button is responsible for taking the user back
         * to the main activity. Preventing the user from pressing
         * the back key multiple times.
         */
        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(), getApplicationContext().getString(R.string.tanav));
        adapter.addFragment(new TwoFragment(), "TWO");
        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);
        }

    }


    /**
     * This function is responsible for prompting the user with a dialog box,
     * once the hit the back key on the app. Asking for confirmation if they,
     * really want to exit the app. If user selects Yes, the app will quit.
     * If the user selects cancel, the app will continue to run.
     */
    @Override
    public void onBackPressed() {

        CharSequence exit = getApplicationContext().getString(R.string.exit);
        CharSequence exit_message = getApplicationContext().getString(R.string.exit_message);

        new AlertDialog.Builder(this)
                .setTitle(exit)
                .setMessage(exit_message)
                .setNegativeButton(android.R.string.no, null)
                .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {

                    public void onClick(DialogInterface arg0, int arg1) {
                        TanavActivity.super.onBackPressed();
                    }
                }).create().show();
    }


}

Below code works to keep count :) 下面的代码可以保持计数:)

package tanav.sharma;

import android.support.v4.app.Fragment;
import android.content.DialogInterface;
import android.support.design.widget.TabLayout;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import java.util.ArrayList;
import java.util.List;

import tanav.sharma.R;
import tanav.sharma.OneFragment;
import tanav.sharma.TwoFragment;

import android.util.Log;
import android.view.View;
import android.widget.RatingBar;
import android.widget.TextView;
import android.widget.Toast;

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

public class TanavActivity extends AppCompatActivity {


    private RatingBar ratingBar;
    private Toolbar toolbar;
    private TabLayout tabLayout;
    private ViewPager viewPager;
    private int[] tabIcons = {
            R.drawable.ic_action_pro,
            R.drawable.ic_action_web
    };

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

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

        /**
         * This button is responsible for taking the user back
         * to the main activity. Preventing the user from pressing
         * the back key multiple times.
         */
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

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

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

        tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {

            int count_image = 0;
            int count_web = 0;
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                int position = tab.getPosition();
                if(position == 0){

                    count_image = count_image + 1;
                    TextView counter = (TextView) findViewById(R.id.counter);
                    counter.setText(Integer.toString(count_image));

                }else if(position == 1){
                    //count_web = count_web + 1;
                }
            }

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

            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {
                count_image = count_image + 1;
                TextView counter = (TextView) findViewById(R.id.counter);
                counter.setText(Integer.toString(count_image));
            }
        });
    }




    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(), getApplicationContext().getString(R.string.tanav));
        adapter.addFragment(new TwoFragment(), "TWO");
        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);
        }

    }


    /**
     * This function is responsible for prompting the user with a dialog box,
     * once the hit the back key on the app. Asking for confirmation if they,
     * really want to exit the app. If user selects Yes, the app will quit.
     * If the user selects cancel, the app will continue to run.
     */
    @Override
    public void onBackPressed() {

        CharSequence exit = getApplicationContext().getString(R.string.exit);
        CharSequence exit_message = getApplicationContext().getString(R.string.exit_message);

        new AlertDialog.Builder(this)
                .setTitle(exit)
                .setMessage(exit_message)
                .setNegativeButton(android.R.string.no, null)
                .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {

                    public void onClick(DialogInterface arg0, int arg1) {
                        TanavActivity.super.onBackPressed();
                    }
                }).create().show();
    }


}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在 TabLayout 中获取当前选定的选项卡索引? - How to get current selected tab index in TabLayout? 所选标签未传递到TabLayout中的片段 - Selected tab not being passed through to fragment in tablayout 返回应用程序后,TabLayout 中选定的选项卡未显示在屏幕上 - Selected tab in TabLayout is not shown on screen after returning to app 选择不同的选项卡时如何在 ViewPager + TabLayout 中暂停片段? - How to pause a fragment in ViewPager + TabLayout when a different tab is selected? 如何在TabLayout中自定义选定的选项卡指示器? - How can I customize the selected tab indicator in a TabLayout? 如何更改 TabLayout 中选中的选项卡的图标颜色? - How do I change the color of icon of the selected tab of TabLayout? 为什么我的 tablayout 总是选择当前选项卡和下一个选项卡? - Why does my tablayout always do the current tab selected and the next tab? 无法为tabLayout添加标签 - cannot add tab for tabLayout 如何在表格布局中显示通知计数器? - How to show Notification Counter in a Tablayout? 更改TabLayout(android.support.design.widget)的选定选项卡指示器颜色 - change the selected tab indicator color of TabLayout(android.support.design.widget)
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM