Android 滑动碎片的进度条更新

Android 滑动碎片的进度条更新,android,android-fragments,progress-bar,Android,Android Fragments,Progress Bar,我正在创建一个应用程序,根据所选片段显示进度条中的数据,因此如果选择了特定片段,进度条应显示该片段中的数据,依此类推,在我的应用程序中有三个片段,其中两个片段的进度条中的数据得到更新,而第三个片段的进度条不起作用,我试过记录一切看起来都很好,我试过给出记录,我发现被打开的片段只有两个,我没有得到第三个记录,即使我打开第三个片段,如果我再次移动到第二个片段,我会得到打开第三个片段的指示,我不知道我在哪里错过了它。下面是我的代码 public class History extends Fragme

我正在创建一个应用程序,根据所选片段显示进度条中的数据,因此如果选择了特定片段,进度条应显示该片段中的数据,依此类推,在我的应用程序中有三个片段,其中两个片段的进度条中的数据得到更新,而第三个片段的进度条不起作用,我试过记录一切看起来都很好,我试过给出记录,我发现被打开的片段只有两个,我没有得到第三个记录,即使我打开第三个片段,如果我再次移动到第二个片段,我会得到打开第三个片段的指示,我不知道我在哪里错过了它。下面是我的代码

public class History extends Fragment {
     final int PAGE_COUNT = 3;
     private String tabTitles[] = new String[]{"Tab1", "Tab2", "Tab3"};
     public static final String ARG_PAGE = "ARG_PAGE";

    private static final int NUM_PAGES =3;

    String medicinename,medicinepercentage,numberdosages,time;
    String date,day,daypercentage;
    String month,monthdata;

    /**
     * The pager widget, which handles animation and allows swiping horizontally to access previous
     * and next wizard steps.
     */
    private ViewPager mPager;

    /**
     * The pager adapter, which provides the pages to the view pager widget.
     */
    private PagerAdapter mPagerAdapter;


    private int selectedPage; // set selected page

    // TODO: Rename parameter arguments, choose names that match
    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";


    DonutProgress dp;
    DonutProgress dp2;
    DonutProgress dp3;

    public static History newInstance(int page) {
        Bundle args = new Bundle();
        args.putInt(ARG_PAGE, page);
        History fragment = new History();
        fragment.setArguments(args);
        return fragment;
    }


    // TODO: Rename and change types of parameters
    private String mParam1;
    private String mParam2;
    private Paint progressPaint = new Paint();
    private int lineHeight = 30;
    private Paint incompletePaint = new Paint();

    public History() {
        // Required empty public constructor
    }

    /**
     * Use this factory method to create a new instance of
     * this fragment using the provided parameters.
     *
     * @param param1 Parameter 1.
     * @param param2 Parameter 2.
     * @return A new instance of fragment History.
     */
    // TODO: Rename and change types and number of parameters
    public static History newInstance(String param1, String param2) {
        History fragment = new History();
        Bundle args = new Bundle();
        args.putString(ARG_PARAM1, param1);
        args.putString(ARG_PARAM2, param2);
        fragment.setArguments(args);
        return fragment;
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View v = inflater.inflate(R.layout.fragment_history, container, false);

        dp = (DonutProgress) v.findViewById(R.id.donut_progress1);
        dp2 = (DonutProgress) v.findViewById(R.id.donut_progress2);
        dp3 = (DonutProgress) v.findViewById(R.id.donut_progress3);
        new Progress(0).execute();
        new Progress2(0).execute();
        new Progress3(0).execute();



        if (getArguments() != null)
        {
            mParam1 = getArguments().getString(ARG_PARAM1);
            mParam2 = getArguments().getString(ARG_PARAM2);

        }

        mPager = (ViewPager) v.findViewById(R.id.pager); //the UI pager
        mPagerAdapter = new ScreenSlidePagerAdapter(getFragmentManager());
        mPager.setAdapter(mPagerAdapter);
        // mPager.setPageTransformer(true, new RotateDownTransformer()); //set the animation

        selectedPage = 0; //current page
        if (savedInstanceState != null) { //if app was paused, you can reopen the same page
            selectedPage = savedInstanceState.getInt("SELECTED_PAGE");
        }
        selectedPage = 1; //current page
        if (savedInstanceState != null) { //if app was paused, you can reopen the same page
            selectedPage = savedInstanceState.getInt("SELECTED_PAGE");
        }
        selectedPage = 2; //current page
        if (savedInstanceState != null) { //if app was paused, you can reopen the same page
            selectedPage = savedInstanceState.getInt("SELECTED_PAGE");
        }

        selectedPage = 3; //current page
        if (savedInstanceState != null) { //if app was paused, you can reopen the same page
            selectedPage = savedInstanceState.getInt("SELECTED_PAGE");
        }


        mPager.setCurrentItem(selectedPage); //set the current page

        return v;


        // return inflater.inflate(R.layout.fragment_history, container, false);

    }


    private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter{
        public ScreenSlidePagerAdapter(FragmentManager fm) {
            super(fm);
        }
        int i = 0;
        @Override
        public Fragment getItem(int position) {

            switch (position) {
                case 0: // Fragment # 0 - This will show FirstFragment
                    Log.e("Fragment","Fragment 1::"+String.valueOf(i));

                        new Progress(100).execute();
                        new Progress2(20).execute();
                        new Progress3(30).execute();

                    return SlideFragment.newInstance(String.valueOf(0), " ");

                case 1: // Fragment # 1 - This will show SecondFragment
                    Log.e("Fragment","Fragment 2");

                        new Progress(40).execute();
                        new Progress2(50).execute();
                        new Progress3(90).execute();

                    return Slidetwo.newInstance(String.valueOf(1), " ");
                case 2: // Fragment # 1 - This will show SecondFragment
                    Log.e("Fragment","Fragment 3");

                        new Progress(50).execute();
                        new Progress2(10).execute();
                        new Progress3(0).execute();

                    return SlideThree.newInstance(String.valueOf(2), " ");

                default:
                    return null;
            }
        }
        @Override
        public int getCount()
        {
            return NUM_PAGES;
        }


    }


    class Progress extends AsyncTask<Void, Integer, Integer>
        {
            int dummyVariable = 1;
            Progress(int dummyVariable)
            {
               this.dummyVariable = dummyVariable;
            }
            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                dp.setMax(100);
             // Progress.getIndeterminateDrawable().setColorFilter(Color.parseColor("#C0D000"), android.graphics.PorterDuff.Mode.SRC_ATOP);
            }

            @Override
            protected Integer doInBackground(Void... params)
            {
                for (int i = 0; i <= dummyVariable; i++)
                {
                    publishProgress(i);
                    try
                    {
                        Thread.sleep(20);
                    }
                    catch (InterruptedException ie)
                    {
                        ie.printStackTrace();
                    }
                }
                return null;

            }

            @Override
            protected void onProgressUpdate(Integer... values) {
                super.onProgressUpdate(values);
                dp.setProgress(values[0]);
            }

            @Override
            protected void onPostExecute(Integer integer) {
                super.onPostExecute(integer);
            }
        }

        class Progress2 extends AsyncTask<Void, Integer, Integer> {
            int dummyVariable = 0;
            Progress2(int dummyVariable)
            {
                this.dummyVariable = dummyVariable;
            }


            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                dp2.setMax(100);
            }

            @Override
            protected Integer doInBackground(Void... params) {
                for (int i = 0; i <= dummyVariable; i++) {
                    publishProgress(i);
                    try {
                        Thread.sleep(20);
                    }
                    catch (InterruptedException ie)
                    {
                        ie.printStackTrace();
                    }
                }
                return null;
            }

            @Override
            protected void onProgressUpdate(Integer... values) {
                super.onProgressUpdate(values);

                dp2.setProgress(values[0]);
            }

            @Override
            protected void onPostExecute(Integer integer) {
                super.onPostExecute(integer);
            }
        }


    class Progress3 extends AsyncTask<Void, Integer, Integer>
    {

        int dummyVariable = 0;
        Progress3(int dummyVariable)
        {
            this.dummyVariable = dummyVariable;
        }

        @Override
        protected void onPreExecute()
        {
            super.onPreExecute();
            dp3.setMax(100);
        }

        @Override
        protected Integer doInBackground(Void... params)
        {
            for (int i = 0; i <= dummyVariable; i++) {
                publishProgress(i);
                try
                {
                    Thread.sleep(20);
                }
                catch (InterruptedException ie)
                {
                    ie.printStackTrace();
                }
            }
            return null;


        }

        @Override
        protected void onProgressUpdate(Integer... values) {
            super.onProgressUpdate(values);
            dp3.setProgress(values[0]);
        }

        @Override
        protected void onPostExecute(Integer integer) {
            super.onPostExecute(integer);
        }
    }


        // TODO: Rename method, update argument and hook method into UI event


    }
公共类历史扩展片段{
最终整版页数=3;
私有字符串tabTitles[]=新字符串[]{“Tab1”、“Tab2”、“Tab3”};
公共静态最终字符串ARG\u PAGE=“ARG\u PAGE”;
私有静态最终int NUM_PAGES=3;
字符串medicinename、medicinepercentage、numberdosages、time;
字符串日期、日、日百分比;
字符串月,monthdata;
/**
*寻呼机小部件,处理动画并允许水平滑动以访问上一页
*以及接下来的向导步骤。
*/
私人寻呼机;
/**
*寻呼机适配器,为查看寻呼机小部件提供页面。
*/
私人寻呼器;
private int selectedPage;//设置所选页面
//TODO:重命名参数参数,选择匹配的名称
//片段初始化参数,例如ARG_ITEM_NUMBER
私有静态最终字符串ARG_PARAM1=“PARAM1”;
私有静态最终字符串ARG_PARAM2=“PARAM2”;
Donutdp;
不使用dp2;
不要进步dp3;
公共静态历史记录newInstance(int页){
Bundle args=新Bundle();
args.putInt(ARG_页,第页);
历史片段=新历史();
fragment.setArguments(args);
返回片段;
}
//TODO:重命名和更改参数类型
私有字符串mParam1;
私有字符串mParam2;
private Paint progressPaint=新油漆();
专用int线宽=30;
私人油漆不完整油漆=新油漆();
公共历史(){
//必需的空公共构造函数
}
/**
*使用此工厂方法创建的新实例
*使用提供的参数创建此片段。
*
*@param param1参数1。
*@param param2参数2。
*@返回碎片历史的新实例。
*/
//TODO:重命名和更改参数的类型和数量
公共静态历史记录newInstance(字符串param1,字符串param2){
历史片段=新历史();
Bundle args=新Bundle();
args.putString(ARG_PARAM1,PARAM1);
args.putString(ARG_PARAM2,PARAM2);
fragment.setArguments(args);
返回片段;
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
视图v=充气机。充气(R.layout.fragment_历史,容器,错误);
dp=(甜甜圈进程)v.findViewById(R.id.donut\u进程1);
dp2=(DonutProgress)v.findViewById(R.id.DonutProgress2);
dp3=(甜甜圈进程)v.findViewById(R.id.donut\u进程3);
新进度(0.execute();
newprogress2(0).execute();
newprogress3(0).execute();
如果(getArguments()!=null)
{
mParam1=getArguments().getString(ARG_PARAM1);
mParam2=getArguments().getString(ARG_PARAM2);
}
mPager=(ViewPager)v.findviewbyd(R.id.pager);//用户界面寻呼机
mPagerAdapter=newscreensilepageradapter(getFragmentManager());
mPager.setAdapter(mPagerAdapter);
//mPager.setPageTransformer(true,新的RotatedDownTransformer());//设置动画
selectedPage=0;//当前页面
如果(savedInstanceState!=null){//如果应用程序已暂停,则可以重新打开同一页
selectedPage=savedInstanceState.getInt(“所选页面”);
}
selectedPage=1;//当前页面
如果(savedInstanceState!=null){//如果应用程序已暂停,则可以重新打开同一页
selectedPage=savedInstanceState.getInt(“所选页面”);
}
selectedPage=2;//当前页面
如果(savedInstanceState!=null){//如果应用程序已暂停,则可以重新打开同一页
selectedPage=savedInstanceState.getInt(“所选页面”);
}
selectedPage=3;//当前页面
如果(savedInstanceState!=null){//如果应用程序已暂停,则可以重新打开同一页
selectedPage=savedInstanceState.getInt(“所选页面”);
}
mPager.setCurrentItem(selectedPage);//设置当前页面
返回v;
//返回充气机。充气(R.layout.fragment_history,container,false);
}
私有类ScreenSlidePagerAdapter扩展FragmentStatePagerAdapter{
公共屏幕SlidePagerAdapter(FragmentManager fm){
超级(fm);
}
int i=0;
@凌驾
公共片段getItem(int位置){
开关(位置){
案例0://Fragment#0-这将显示FirstFragment
Log.e(“片段”,“片段1::”+String.valueOf(i));
新进展(100.execute();
newprogress2(20).execute();
新进展3(30)。执行();
返回SlideFragment.newInstance(String.valueOf(0),“”);
案例1://Fragment#1-这将显示SecondFragment
Log.e(“片段”、“片段2”);
新进展(40.execute();
newprogress2(50).execute();
newprogress3(90).execute();
yourViewPager.setOffScreenPagingLimt=2;