在tablayout viewpager中运行调整选项卡片段

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在tablayout viewpager中运行调整选项卡片段相关的知识,希望对你有一定的参考价值。

我已经在其中实现了tablayout和view-pager。根据tab和view-pager视图显示正确,

但问题是,当我滑动或选择标签时,它也会调整选项卡代码,并在第一个标签中有警报对话框,当我选择第三个然后第二个时,第一个标签的警告对话框也显示在第二个标签中

这是我的代码

onefragement


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup containe,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_one, containe, false);
    nxt_followup = (EditText) view.findViewById(R.id.nextfollowup);
    img1 = (ImageView) view.findViewById(R.id.img1);
    img2 = (ImageView) view.findViewById(R.id.img2);
    img3 = (ImageView) view.findViewById(R.id.img3);
    sign = (TextView) view.findViewById(R.id.sign);
    issign = (ImageView) view.findViewById(R.id.ifsign);
    add = (EditText) view.findViewById(R.id.address);
    rg = (RadioGroup) view.findViewById(R.id.rg_isreg);
    rb_yes = (RadioButton) view.findViewById(R.id.rb_yes);
    rb_no = (RadioButton) view.findViewById(R.id.rb_no);
    cd = new ConnectionDetector(getActivity());
        //        tvsw=(TextView)view.findViewById(R.id.tvsw);
        //        handler = new Handler();
        //        StartTime = SystemClock.uptimeMillis();
        //        handler.postDelayed(runnable, 0);

        rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                selectId = rg.getCheckedRadioButtonId();
                rb = (RadioButton) group.findViewById(checkedId);
                Str = rb.getText().toString();
                Log.d("RadioID", String.valueOf(checkedId));
                if (Str.contains("Yes")) {

                }
                if (Str.equals("No")) {


                    new android.app.AlertDialog.Builder(getActivity()).setTitle("Registration")
                            .setMessage("Do u want to make new Registration ?")
                            .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    reg_dialog = new Dialog(getActivity());
                                    reg_dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

                                    reg_dialog.setContentView(R.layout.reg_dialog);
                                    final RadioGroup utype = (RadioGroup) reg_dialog.findViewById(R.id.rg_signup);
                                    Button submit = (Button) reg_dialog.findViewById(R.id.btn_proceed);

                                    uname = (EditText) reg_dialog.findViewById(R.id.et_fullName);
                                    mobile = (EditText) reg_dialog.findViewById(R.id.et_mobile);
                                    email = (EditText) reg_dialog.findViewById(R.id.et_signUp_email);
                                    pwd = (EditText) reg_dialog.findViewById(R.id.et_pwd);
                                    repwd = (EditText) reg_dialog.findViewById(R.id.et_repass);
                                    ref_code = (EditText) reg_dialog.findViewById(R.id.et_referral);

                                    submit.setOnClickListener(new View.OnClickListener() {
                                        @Override
                                        public void onClick(View view) {
                                            int selectId = utype.getCheckedRadioButtonId();
                                            rb = (RadioButton) reg_dialog.findViewById(selectId);
                                            user = rb.getText().toString();
                                            strEmail = email.getText().toString();
                                            strMobile = mobile.getText().toString();
                                            boolean b = isValidEmail(strEmail);

                                            if (uname.getText().toString().equalsIgnoreCase("") |
                                                    email.getText().toString().equalsIgnoreCase("") |
                                                    pwd.getText().toString().equalsIgnoreCase("") |
                                                    repwd.getText().toString().equalsIgnoreCase("") |
                                                    mobile.getText().toString().equalsIgnoreCase("")) {
                                                Toast.makeText(getActivity(), "Please fill Complete form", Toast.LENGTH_SHORT).show();
                                            } else {
                                                if (pwd.getText().toString().equals(repwd.getText().toString())) {


                                                    if (b == true) {

                                                        if (strMobile.matches(mobilePattern)) {
                                                            if (ref_code.getText().toString().equalsIgnoreCase("")) {
                                                                ReferralCodeAlert();
                                                            } else {
                                                                isInternetPresent = cd.isConnectingToInternet();
                                                                if (isInternetPresent) {
                                                                    new HttpAsyncTask().execute("https://eprintpost.com/AndroidServlets/SignUpReg");
                                                                } else {
                                                                    Toast.makeText(getActivity(), "Please check internet connection", Toast.LENGTH_LONG).show();

                                                                }
                                                            }
                                                        } else {
                                                            mobile.setError("Enter Valid Mobile Number");
                                                        }

                                                    } else {
                                                        email.setError("Enter Valid Email");

                                                    }
                                                } else {

                                                    repwd.setError("Password not match");

                                                }
                                            }
                                        }
                                    });
                                    reg_dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
                                        @Override
                                        public void onDismiss(final DialogInterface arg0) {
                                            Str = "";
                                        }
                                    });

                                    WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
                                    lp.copyFrom(reg_dialog.getWindow().getAttributes());
                                    lp.width = WindowManager.LayoutParams.MATCH_PARENT;
                                    lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
                                    lp.gravity = Gravity.CENTER;

                                    reg_dialog.getWindow().setAttributes(lp);

                                    reg_dialog.show();
                                }
                            }).setNegativeButton("No", null).show();


                }
            }

            private void ReferralCodeAlert() {
                new android.app.AlertDialog.Builder(getActivity()).setIcon(android.R.drawable.ic_dialog_alert).setTitle("Alert")
                        .setMessage("Are you sure want to proceed without entering referral code?")
                        .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                isInternetPresent = cd.isConnectingToInternet();
                                if (isInternetPresent) {
                                    new HttpAsyncTask().execute("https://eprintpost.com/AndroidServlets/SignUpReg");
                                } else {
                                    Toast.makeText(getActivity(), "Please check internet connection", Toast.LENGTH_LONG).show();

                                }


                            }
                        }).setNegativeButton("No", null).show();
            }

            public boolean isValidEmail(CharSequence target) {
                if (target == null) {
                    return false;
                } else {
                    return android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
                }
            }

        });

    final LocationManager manager = (LocationManager) getActivity().getSystemService(LOCATION_SERVICE);
    if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER))

    {

        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setMessage("GPS Is Disabled.Please Turn it ON")
                .setCancelable(false)
                .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                        startActivity(intent);
                    }
                })
                .setNegativeButton("No", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        dialog.cancel();

                    }
                });
        AlertDialog alert = builder.create();
        alert.show();


    } else {
        locationManager = (LocationManager) getActivity().getSystemService(LOCATION_SERVICE);
        Criteria criteria = new Criteria();
        String bestProvider = locationManager.getBestProvider(criteria, true);

        location = locationManager.getLastKnownLocation(bestProvider);
        locationManager.requestLocationUpdates(bestProvider, 20000, 0, this);

        if (location != null) {
            Log.v("Abhijit", "" + location.getLatitude() + "longgg" + location.getLongitude());
            Geocoder geocoder;
            List<Address> addresses = null;
            geocoder = new Geocoder(getActivity(), Locale.getDefault());

            try {
                addresses = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1); // Here 1 represent max location result to returned, by documents it recommended 1 to 5

            } catch (IOException e) {
                e.printStackTrace();
            }

            if (addresses.get(0).getMaxAddressLineIndex() != 0)

                for (int i = 0; i < addresses.get(0).getMaxAddressLineIndex(); i++) {
                    addline += " " + addresses.get(0).getAddressLine(i);
                }
            add.setText("" + addline);
        }
        //            String address = addresses.get(0).getAddressLine(0);
        //            // If any additional address line present than only, check with max available address lines by getMaxAddressLineIndex()
        //            String city = addresses.get(0).getLocality();
        //            String state = addresses.get(0).getAdminArea();
        //            String country = addresses.get(0).getCountryName();
        //            String postalCode = addresses.get(0).getPostalCode();
        //            String knownName = addresses.get(0).getFeatureName(); // Only if available else return NULL

    }
    tempDir = new File(Environment.getExternalStorageDirectory() + File.separator + ".Marketing");
    if (tempDir.exists())
        deleteDir(tempDir);
    if (tempDir.mkdir()) {
        signi = new File(tempDir.getAbsolutePath() + File.separator + "sign.png");
    }


    sign.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            sign_dialog = new Dialog(getActivity());
            sign_dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

            sign_dialog.setContentView(R.layout.signature_dialog);
            sign_dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
                @Override
                public void onDismiss(final DialogInterface arg0) {
                    if (signi.exists()) {
                        issign.setVisibility(View.VISIBLE);

                    }
                }
            });

            WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
            lp.copyFrom(sign_dialog.getWindow().getAttributes());
            lp.width = WindowManager.LayoutParams.MATCH_PARENT;
            lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
            lp.gravity = Gravity.CENTER;

            sign_dialog.getWindow().setAttributes(lp);
            mContent = (LinearLayout) sign_dialog.findViewById(R.id.linearLayout);
            mView = mContent;

            Button clear = (Button) sign_dialog.findViewById(R.id.clear);
            Button get_sign = (Button) sign_dialog.findViewById(R.id.sign_get);

            mSignature = new signature1(getActivity(), null);
            mSignature.setBackgroundColor(Color.WHITE);
            mContent.addView(mSignature, LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT);
            get_sign.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    mView.setDrawingCacheEnabled(true);
                    mSignature.save(mView);
                    sign_dialog.dismiss();

                }
            });
            clear.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    mSignature.clear();

                }
            });

            sign_dialog.show();

        }
    });

    img1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(cameraIntent, 1);

        }
    });

    img2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(cameraIntent, 2);

        }
    });

    img3.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(cameraIntent, 3);

        }
    });
    nxt_followup.setClickable(true);
    nxt_followup.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Calendar now = Calendar.getInstance();
            //display date picker dialog
            DatePickerDialog dpd = DatePickerDialog.newInstance(
                    OneFragment.this,
                    now.get(Calendar.YEAR),//current year
                    now.get(Calendar.MONTH),//current month
                    now.get(Calendar.DAY_OF_MONTH)//current date
            );
            dpd.setMinDate(now);

            //set the theme
            dpd.setThemeDark(false);
            //vibrate on open
            dpd.vibrate(true);
            dpd.setAccentColor(Color.parseColor("#ff4081"));
            dpd.dismissOnPause(false);
            dpd.show(getActivity().getFragmentManager(), "Follow Date");
        }
    });

    return view;
}

这是我的主要活动代码,我用tablayout设置viewpager

main activity.Java

public class MainActivity extends AppCompatActivity
    implements NavigationView.OnNavigationItemSelectedListener {
private TabLayout tabLayout;
private ViewPager viewPager;
AppBarLayout ab;
private int[] tabIcons = {
        R.mipmap.ic_tab_contacts,
        R.mipmap.ic_tab_call,
        R.mipmap.ic_tab_report,
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

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

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.setDrawerListener(toggle);
    Log.v("Abhijit", "" + MainActivity.this.getResources().getConfiguration().orientation);
    toggle.syncState();
    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setItemIconTintList(null);

    navigationView.setNavigationItemSelectedListener(this);
    ab = (AppBarLayout) findViewById(R.id.aaa);
    viewPager = (ViewPager) findViewById(R.id.viewpager);
    setupViewPager(viewPager);

    tabLayout = (TabLayout) findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(viewPager);
    setupTabIcons();
    int tabIconColor = ContextCompat.getColor(MainActivity.this, R.color.yellow);
    tabLayout.getTabAt(0).getIcon().setColorFilter(tabIconColor, PorterDuff.Mode.SRC_IN);
    tabLayout.setTabTextColors(Color.parseColor("#FFFFFF"), Color.parseColor("#FF9800"));
    tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            Log.e("abhijjit", String.valueOf(tab.getPosition()));
            int tabIconColor = ContextCompat.getColor(MainActivity.this, R.color.yellow);
            tab.getIcon().setColorFilter(tabIconColor, PorterDuff.Mode.SRC_IN);
            tabLayout.setTabTextColors(Color.parseColor("#FFFFFF"), Color.parseColor("#FF9800"));


        }

        @Override
        public void onTabUnselected(TabLayout.Tab tab) {
            int tabIconColor = ContextCompat.getColor(MainActivity.this, R.color.white);
            tab.getIcon().setColorFilter(tabIconColor, PorterDuff.Mode.SRC_IN);

        }

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

        }
    });
}

@Override
public void onBackPressed() {
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    if (drawer.isDrawerOpen(GravityCompat.START)) {
        drawer.closeDrawer(GravityCompat.START);
    } else {
        super.onBackPressed();
    }
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    return super.onOptionsItemSelected(item);
}

@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
    // Handle navigation view item clicks here.
    int id = item.getItemId();

    if (id == R.id.nav_new) {
        // Handle the camera action
        viewPager.setCurrentItem(0);
    } else if (id == R.id.nav_existing) {
        viewPager.setCurrentItem(1);
    } else if (id == R.id.nav_report) {
        viewPager.setCurrentItem(2);

    } else if (id == R.id.nav_share) {
        Intent sendIntent = new Intent();
        sendIntent.setAction(Intent.ACTION_SEND);
        sendIntent.putExtra(Intent.EXTRA_TEXT, "Hey share successful");
        sendIntent.setType("text/plain");
        startActivity(Intent.createChooser(sendIntent, getResources().getText(R.string.app_name)));

    }

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawer.closeDrawer(GravityCompat.START);
    return true;
}

private void setupTabIcons() {
    tabLayout.getTabAt(0).setIcon(tabIcons[0]);
    tabLayout.getTabAt(1).setIcon(tabIcons[1]);
    tabLayout.getTabAt(2).setIcon(tabIcons[2]);

}


private void setupViewPager(ViewPager viewPager) {
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
    adapter.addFragment(new OneFragment(), "New");
    adapter.addFragment(new TwoFragment(), "Existing");
    adapter.addFragment(new ThreeFragment(), "Reports");
    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);
    }
}

}

如何克服不要从另一个tab中的其他选项卡执行代码。我只想运行哪个选项卡可见的代码

答案

用这个。

viewPager.setOffscreenPageLimit(0) 

这将停止加载页面。

以上是关于在tablayout viewpager中运行调整选项卡片段的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 中使用 TabLayout 和 ViewPager2

关于TabLayout与ViewPager在Fragment中嵌套Fragment使用或配合使用的思考

如何使用 tabLayout 在 ViewPager 中显示片段?

ViewPager指示器,TabLayout开源库

tablayout+viewpager怎么设置取消滑动

在ViewPager + TabLayout中跳过页面