2016-10-13 5 views
2

最初に2つのフラグメントがありますFragment私はEditTextです。問題は、EditTextのデータフィールドが正しいかどうかをチェックする前に、次のフラグメントにスワイプしたくないということです。ViewPagerを使用して別のフラグメントにスワイプする前のデータを編集します

enter image description here

PSの下に、この写真で私の問題を説明する

I'amは:私が検索し、自分で解決策を見つけることを試みたが、それは私のために動作しませんでしたしました。

+1

あなたがこの問題にあなたのアプローチを変更する必要があります!あなたが本当にこのアプローチに固執できる唯一の方法は、入力がオプションの場合です。そうすれば、ユーザーは制限なく移動できます。また、私は次のスワイプする前に確認のためのボタンを追加します – Eenvincible

+0

TextWatcherを使用してこの問題の良い解決策になりますか? –

答えて

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

}

あなたはブール値を渡すことによって、ビューページャスワイプを有効または無効にすることができます。

1

これは便利になります

vpPager.addOnPageChangeListener(new OnPageChangeListener() { 

    // This method will be invoked when a new page becomes selected. 
    @Override 
    public void onPageSelected(int position) { 
     Toast.makeText(HomeActivity.this, 
        "Selected page position: " + position, Toast.LENGTH_SHORT).show(); 
    } 

    // This method will be invoked when the current page is scrolled 
    @Override 
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
     // Code goes here 
    } 

    // Called when the scroll state changes: 
    // SCROLL_STATE_IDLE, SCROLL_STATE_DRAGGING, SCROLL_STATE_SETTLING 
    @Override 
    public void onPageScrollStateChanged(int state) { 
     // Code goes here 
    } 
}); 
関連する問題