2017-02-17 5 views
0

선택한 조각을 기반으로 진행률 막대에 데이터를 표시하는 응용 프로그램을 만드는 중입니다. 따라서 특정 조각을 선택하면 진행률 표시 줄에 해당 조각의 데이터가 표시되어야하며 내 응용 프로그램에는 3 개의 파편 진행 막대의 데이터가 두 개의 조각으로 업데이트되고 세 번째로는 작동하지 않습니다. 로그에서 모든 것을 시도해 보았습니다. 로그를 보여 주려고했는데, ive에서 로그 아웃 한 부분은 열리는 조각이 그들과 내가 세 번째 조각을 열어도, 세 번째 조각을 열어도 세 번째 조각을 열지 않는 경우에도 세 번째 조각을 열어도 그 세 번째 조각을 다시 열면 무엇이 빠져 있는지 파악할 수 없다. 아래는 내 코드입니다조각을 스 와이프 할 때 진도 표시 줄 업데이트

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 


    } 

답변

0

offscreenPaginglimit를 설정 했습니까? 이 밖으로 도움이된다면

yourViewPager.setOffScreenPagingLimt=2; 

가 알려줘 설정하십시오 !

+0

setOffscreenPageLimit (2)를 설정하면 조각을 스 와이프 할 때 순환 진행 막대가 작동하지 않습니다. –

+0

색인을 변경해보십시오. 그것을 0으로 만드십시오. – sivaram

+0

실제로 진행률 표시 줄이 두 번째 조각으로 스 와이프 할 때 데이터를 변경하고 세 번째 조각을 스 와이프하면 아무 것도 변경되지 않습니다. 다시 세 번째 조각에서 두 번째 조각으로 스 와이프하면 세 번째 조각의 데이터가 표시됩니다.이 인덱스를 0으로 변경하면 같은 일이 일어나고 있습니다. . –

관련 문제