I'm trying to make a viewpager that has editable text, but I don't want the viewpager to scroll when a text box is being edited. I'm trying to disable the scrolling by using the beginFakeDrag and endFakeDrag functions of the viewpager which causes the viewpager to ignore all touch events. For some reason if you call beginFakeDrag followed by endFakeDrap it works fine, but when separated it throws the following error:
03-08 17:54:00.511: E/AndroidRuntime(31362): FATAL EXCEPTION: main
03-08 17:54:00.511: E/AndroidRuntime(31362): java.lang.NullPointerException
03-08 17:54:00.511: E/AndroidRuntime(31362): at android.support.v4.view.ViewPager.endFakeDrag(ViewPager.java:1683)
03-08 17:54:00.511: E/AndroidRuntime(31362): at gtg.gis.RequestActivity$2.onFocusChange(RequestActivity.java:115)
03-08 17:54:00.511: E/AndroidRuntime(31362): at android.view.View.onFocusChanged(View.java:2742)
03-08 17:54:00.511: E/AndroidRuntime(31362): at android.widget.TextView.onFocusChanged(TextView.java:7080)
03-08 17:54:00.511: E/AndroidRuntime(31362): at android.view.View.clearFocus(View.java:2639)
03-08 17:54:00.511: E/AndroidRuntime(31362): at android.view.ViewGroup.clearFocus(ViewGroup.java:522)
03-08 17:54:00.511: E/AndroidRuntime(31362): at android.view.View.setFlags(View.java:4645)
03-08 17:54:00.511: E/AndroidRuntime(31362): at android.view.View.setVisibility(View.java:3116)
03-08 17:54:00.511: E/AndroidRuntime(31362): at gtg.gis.RequestActivity$1.onClick(RequestActivity.java:95)
03-08 17:54:00.511: E/AndroidRuntime(31362): at android.view.View.performClick(View.java:2485)
03-08 17:54:00.511: E/AndroidRuntime(31362): at android.view.View$PerformClick.run(View.java:9089)
03-08 17:54:00.511: E/AndroidRuntime(31362): at android.os.Handler.handleCallback(Handler.java:587)
03-08 17:54:00.511: E/AndroidRuntime(31362): at android.os.Handler.dispatchMessage(Handler.java:92)
03-08 17:54:00.511: E/AndroidRuntime(31362): at android.os.Looper.loop(Looper.java:130)
03-08 17:54:00.511: E/AndroidRuntime(31362): at android.app.ActivityThread.main(ActivityThread.java:3806)
03-08 17:54:00.511: E/AndroidRuntime(31362): at java.lang.reflect.Method.invokeNative(Native Method)
03-08 17:54:00.511: E/AndroidRuntime(31362): at java.lang.reflect.Method.invoke(Method.java:507)
03-08 17:54:00.511: E/AndroidRuntime(31362): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-08 17:54:00.511: E/AndroidRuntime(31362): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-08 17:54:00.511: E/AndroidRuntime(31362): at dalvik.system.NativeStart.main(Native Method)
Here is my code.
commentBox.setOnFocusChangeListener(new EditText.OnFocusChangeListener()
{
public void onFocusChange(View v, boolean hasFocus)
{
if (hasFocus)
{
InputMethodManager mgr = (InputMethodManager) getContext().getSystemService(
Context.INPUT_METHOD_SERVICE);
mgr.showSoftInput(v, InputMethodManager.SHOW_IMPLICIT);
_viewPager.beginFakeDrag();
return;
}
_viewPager.endFakeDrag();
InputMethodManager mgr = (InputMethodManager) getContext().getSystemService(
Context.INPUT_METHOD_SERVICE);
mgr.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
});