2015-06-23 9 views
-2

Я новичок в android. Я создаю приложение, состоящее из пейджера вида с маской вкладки. Когда я нажимаю кнопку, он выполняет некоторые вычисления внутри пейджера представления. Пока он делает это, я хочу, чтобы переключение между вкладками было отключено. Таким образом, не просматривается между страницами, пока он вычисляется. После завершения вычислений я хочу, чтобы включение включалось снова. Может ли кто-нибудь сказать мне, как это сделать, пожалуйста? Спасибо заранее. Я пробовал это. Пожалуйста, посмотрите на это:Как отключить swipes в представлении пейджера в android

public class Auto extends FragmentActivity{ 
    Button tests; 
    private ViewPager pager; 
    @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.auto); 
       tests = (PaperButton)findViewById(R.id.action_button_tests); 
       tests.setOnClickListener(new View.OnClickListener() { 

        @Override 
        public void onClick(View v) { 
         if(pager.getCurrentItem()==0){ 
          tests.setTag(1); 
          tests.setText("START TEST"); 
         final int status = (Integer)v.getTag(); 
         if(status==1){ 
          tests.setText("STOP TEST"); 
          v.setTag(0); 
          int i; 
          Login.Communication_Ok=false; 
          for(i=0;(i<5 && Login.Communication_Ok!=true);i++) 
          Login.Send_Commands_To_Micro_Controller(1); 
          if(Login.Communication_Ok==true) 
          { 
           Video_Status=false; 
           Login.Bucket_Status = false; 
           Login.Auto_Mode_Bfr_Fuse =false; 
           for(i=0;(i<5 && Login.Auto_Mode_Bfr_Fuse!=true);i++) 
           Login.Send_Commands_To_Micro_Controller(3); 
           if(Login.Auto_Mode_Bfr_Fuse==true) 
           Toast.makeText(Auto.this, "Test started", Toast.LENGTH_LONG).show(); 
           else 
           { 
           Toast.makeText(Auto.this, "Communication Failure in Before Fuse connection Segment", Toast.LENGTH_LONG).show(); 
           tests.setText("START TEST"); 
           v.setTag(1); 
           return; 
           } 
           Test_Completed=false; 
           if(!Auto_Bucket_Tests_Thread.isAlive()) 
           Auto_Bucket_Tests_Thread.start(); 


          } 

         } 
         else{ 
          tests.setText("START TEST"); 

          v.setTag(1); 
         } 
         } 


         if(pager.getCurrentItem()==1){ 
          tests.setTag(1); 
          tests.setText("START TEST"); 

          final int status = (Integer)v.getTag(); 
          if(status==1){ 
           tests.setText("STOP TEST"); 
           v.setTag(0); 
           int i; 
           Login.Communication_Ok=false; 
           for(i=0;(i<5 && Login.Communication_Ok!=true);i++) 
           Login.Send_Commands_To_Micro_Controller(1); 
           if(Login.Communication_Ok==true) 
           { 
            Video_Status=false; 
            Login.Bucket_Status = false; 
            Login.Automode_After_connecting_fuse =false; 
            for(i=0;(i<5 && Login.Automode_After_connecting_fuse!=true);i++) 
            Login.Send_Commands_To_Micro_Controller(4); 
            if(Login.Automode_After_connecting_fuse==true){ 
            Toast.makeText(Auto.this, "Test started", Toast.LENGTH_LONG).show(); 



            **/*For Disabling swipe between tabs*/** 
            pager.setOnTouchListener(new OnTouchListener() { 

             @Override 
             public boolean onTouch(View v, MotionEvent event) { 
              pager.getCurrentItem(); 
              return false; 
             } 
            }); 
            pager.setEnabled(false); 

            } 
            else 
            { 
            Toast.makeText(Auto.this, "Communication Failure in After Fuse connection Segment", Toast.LENGTH_LONG).show(); 
            tests.setText("START TEST"); 
            v.setTag(1); 
            return; 
            } 
            Test_Completed=false; 

           } 


          } 
          else{ 
           tests.setText("START TEST"); 

           v.setTag(1); 
           } 

        } 
} } 
+1

Вы даже искали в Google ответы? [ЗДЕСЬ] (http://stackoverflow.com/questions/9650265/how-do-disable-paging-by-swiping-with-finger-in-viewpager-but-still-be-able-to-s) – snachmsm

+0

Но здесь я расширяю свою основную деятельность до активности фрагмента @snachmsm –

+0

, и что? используйте измененный 'ViewPager', нет никакой разницы, где вы его используете, Fragment, Activity, что бы это ни было ... это' View', требуется только 'Context' – snachmsm

ответ

1
public class CustomViewPager extends ViewPager { 

private boolean enabled; 

public CustomViewPager(Context context, AttributeSet attrs) { 
super(context, attrs); 
this.enabled = true; 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
if (this.enabled) { 
    return super.onTouchEvent(event); 
} 

return false; 
} 

@Override 
public boolean onInterceptTouchEvent(MotionEvent event) { 
if (this.enabled) { 
    return super.onInterceptTouchEvent(event); 
} 

return false; 
} 

public void setPagingEnabled(boolean enabled) { 
this.enabled = enabled; 
} } 

Вам просто нужно вызвать «setPagingEnabled» метод с «ложными» и пользователи не смогут пролистывания постраничной.

+0

Но здесь моя основная основная деятельность, расширяющая активность фрагмента @Ram –

+0

, так что проблема? нет никакой проблемы с активностью фрагмента –

+0

Но в активности фрагмента нет никакого метода setPagingEnabled dude @Ram –