选项卡在第三个选项卡的数据更改时自动重定向到第一个选项卡

时间:2018-02-27 04:41:11

标签: android android-tablayout floating-action-button

您好我在我的

中使用Tablayout

TAB1 TAB2 TAB3

当我打开应用时,默认选择TAB1。所有TABs都有recyclerview。现在我有一个FAB按钮用于所有片段。我正在使用FAB按钮更改语言。

每当用户更改语言数据时,将根据语言选择显示。现在问题是,当我在TAB3并且更改语言而不是留在TAB3时,它会转到TAB1

任何人都可以帮我解决这个问题。

public class LibraryFragment extends Fragment  {

    private static final String TAG = LibraryFragment.class.getSimpleName();

    private TabLayout tabLayout;
    private ViewPager viewPager;
    private String catid;
    private FragmentManager fragmentManager;
    private String SELECTED_ACTION;
    private String SELECTED_LANGUAGE,SELECTED_LANGUAGENM,sel_cat;
    private int VID_CODE;
    private FloatingActionButton fab;
    private ArrayList<LanguageModel> langList;

    public LibraryFragment() {
    }

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_library, container, false);

        langList = (ArrayList<LanguageModel>) getArguments().getSerializable("langlist");

        catid = getArguments().getString("frommusic");

        SELECTED_ACTION = getArguments().getString("action");

        SELECTED_LANGUAGE = getArguments().getString("sel_lang");
        SELECTED_LANGUAGENM = getArguments().getString("sel_langnm");
        sel_cat = getArguments().getString("sel_cat");
        System.out.println("in library" + SELECTED_LANGUAGE);

        tabLayout = (TabLayout) view.findViewById(R.id.tabs);
        viewPager = (ViewPager) view.findViewById(R.id.view_pager);

        viewPager.setAdapter(new CustomFragmentPageAdapter(getChildFragmentManager()));
        tabLayout.setupWithViewPager(viewPager);

        fab = (FloatingActionButton) view.findViewById(R.id.fabChat);

        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                setdailog();
            }
        });

        return view;
    }

    public void setdailog()
    {
        final Dialog  cpDialog = new Dialog(getActivity());
        cpDialog.setTitle("Select Language");
        cpDialog.setContentView(R.layout.alert_list);
        ListView listView = (ListView) cpDialog.findViewById(R.id.listiview_lang);
        AlertListAdapter mAdapter = new AlertListAdapter(langList, getActivity());
        listView.setAdapter(mAdapter);
        listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                SELECTED_LANGUAGE = langList.get(position).getLangid();
                System.out.println("JO JO"+SELECTED_LANGUAGE);

                Intent intent=new Intent(getActivity(),MusicActivity.class);
                intent.putExtra("langlist",langList);
                intent.putExtra("selid",catid);
                intent.putExtra("langid",SELECTED_LANGUAGE);
                intent.putExtra("langname",langList.get(position).getLangname());
                intent.putExtra("selcat",sel_cat);
                startActivity(intent);

                cpDialog.dismiss();
            }
        });
        cpDialog.show();
    }

    public class AlertListAdapter extends BaseAdapter {

        ArrayList<LanguageModel> mData;
        Context mContext;
        LayoutInflater inflater;

        public AlertListAdapter(ArrayList<LanguageModel> data, Context context) {
            mData = data;
            mContext = context;
            inflater = LayoutInflater.from(context);
        }

        @Override
        public int getCount() {
            return mData.size();
        }

        @Override
        public Object getItem(int arg0) {
            return null;
        }

        @Override
        public long getItemId(int arg0) {
            // TODO Auto-generated method stub
            return 0;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            if (convertView == null) {
                LayoutInflater mInflater = (LayoutInflater) mContext
                        .getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
                convertView = mInflater.inflate(R.layout.item_alert_list, null);
            }
            TextView tvTitle = (TextView) convertView.findViewById(R.id.textView_languge);

            tvTitle.setText(mData.get(position).getLangname());

            return convertView;
        }
    }
    public class CustomFragmentPageAdapter extends FragmentPagerAdapter {

        private  final String TAG = CustomFragmentPageAdapter.class.getSimpleName();

        private static final int FRAGMENT_COUNT = 3;

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

        @Override
        public Fragment getItem(int position) {
            switch (position){
                case 0:
                    Fragment f1 = new SongFragment();
                    Bundle args1 = new Bundle();
                    args1.putString("fromlibfrag", catid);
                    args1.putString("action", SELECTED_ACTION);
                    args1.putString("sel_lang", SELECTED_LANGUAGE);
                    args1.putSerializable("langlist",langList);
                    f1.setArguments(args1);
                    return f1;

                case 1:
                    Fragment f2 = new PhotoFragment();
                    Bundle args2 = new Bundle();
                    args2.putString("fromlibfrag", catid);
                    args2.putString("action", SELECTED_ACTION);
                    args2.putString("sel_lang", SELECTED_LANGUAGE);
                    args2.putSerializable("langlist",langList);
                    f2.setArguments(args2);
                    return f2;

                case 2:
                    Fragment f3 = new SmsFragment();
                    Bundle args3 = new Bundle();
                    args3.putString("fromlibfrag", catid);
                    args3.putString("action", SELECTED_ACTION);
                    args3.putString("sel_lang", SELECTED_LANGUAGE);
                    args3.putSerializable("langlist",langList);
                    f3.setArguments(args3);
                    return f3;
            }
            return null;
        }

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

        @Override
        public CharSequence getPageTitle(int position) {
            switch (position){
                case 0:
                    return "Videos";
                case 1:
                    return "Photos";
                case 2:
                    return "SMS";

            }
            return null;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

int position=0; 
     tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener(){
 @Override public void onTabSelected(TabLayout.Tab tab){ 
position = tab.getPosition(); 
} });

fab.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    setdailog(position);
                }
            });

现在

 public void setdailog(int currentTab)
        {


            final Dialog  cpDialog = new Dialog(getActivity());
            cpDialog.setTitle("Select Language");
            cpDialog.setContentView(R.layout.alert_list);
            ListView listView = (ListView) cpDialog.findViewById(R.id.listiview_lang);
            AlertListAdapter mAdapter = new AlertListAdapter(langList, getActivity());
            listView.setAdapter(mAdapter);
            listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
            listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    SELECTED_LANGUAGE = langList.get(position).getLangid();
                    System.out.println("JO JO"+SELECTED_LANGUAGE);

                    Intent intent=new Intent(getActivity(),MusicActivity.class);
                    intent.putExtra("langlist",langList);
                    intent.putExtra("selid",catid);
                    intent.putExtra("langid",SELECTED_LANGUAGE);
                    intent.putExtra("langname",langList.get(position).getLangname());
                    intent.putExtra("selcat",sel_cat);
                    intent.putExtra("currentTab" , currentTab);
                    startActivity(intent);
                    finish();
                    cpDialog.dismiss();

                }
            });
            cpDialog.show();
        }

现在在MusicActivity.java

    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    Intent intent  = getIntent();
    int currentTab = intent.getIntExtra("currenttab", 0);
//here you can check if you get 1, 2 or 3 in currentTab then you have to set current tab to 1, 2 or 3 respectively.
    }