Как отключить свайпы в пейджере просмотра в андроиде

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

    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);
                                }

                    }
}   }

person lakshman sundeep    schedule 23.06.2015    source источник
comment
ты хоть в гугле искал ответ? ЗДЕСЬ   -  person snachmsm    schedule 23.06.2015
comment
Но здесь я расширяю свою основную деятельность на активность фрагмента @snachmsm   -  person lakshman sundeep    schedule 23.06.2015
comment
И что? используйте модифицированный ViewPager, нет никакой разницы, где вы его используете, фрагмент, активность, что угодно... это View, нужно только Context   -  person snachmsm    schedule 24.06.2015


Ответы (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» с «false», и пользователи не смогут провести пальцем по страницам.

person RamBabu Pudari    schedule 23.06.2015
comment
Но здесь моя основная основная деятельность расширяет активность фрагмента @Ram - person lakshman sundeep; 23.06.2015
comment
Так в чем проблема? нет проблем с активностью фрагмента - person RamBabu Pudari; 23.06.2015
comment
Но в активности фрагмента нет метода setPagingEnabled, чувак @Ram - person lakshman sundeep; 23.06.2015