Reputation: 4578
I'm using SwipeRefreshLayout
and WebView
in my application with no problems.
Inside the ViewPager
code:
@Override
public Object instantiateItem(View collection, int position) {
currentArticle = newsList.get(position);
View webViewContainer = getActivity().getLayoutInflater().inflate(R.layout.view_pager_item, null);
WebView webview = (WebView) webViewContainer.findViewById(R.id.webview);
SetSettingForWebView(webview);
webview.loadUrl(currentArticle.getArticleURL());
SwipeRefreshLayout swipe = (SwipeRefreshLayout) webViewContainer.findViewById(R.id.swipe_container);
setSettingForSwipeLayout(swipe);
((ViewPager) collection).addView(webViewContainer, 0);
return webViewContainer;
}
The error occurs regardless whether I define the SwipeRefreshLayout
or not.
This is the error. As you can see it's not related to my code but I don't know how to solved this one
LOG:
05-25 21:55:59.804: E/AndroidRuntime(4665): FATAL EXCEPTION: main
05-25 21:55:59.804: E/AndroidRuntime(4665): Process: com.dimrix.test, PID: 4665
05-25 21:55:59.804: E/AndroidRuntime(4665): java.lang.NullPointerException
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.support.v4.widget.SwipeRefreshLayout.startRefresh(SwipeRefreshLayout.java:441)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.support.v4.widget.SwipeRefreshLayout.onTouchEvent(SwipeRefreshLayout.java:399)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.View.dispatchTouchEvent(View.java:7811)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2210)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1945)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
05-25 21:55:59.804: E/AndroidRuntime(4665): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2169)
05-25 21:55:59.804: E/AndroidRuntime(4665): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1613)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.app.Activity.dispatchTouchEvent(Activity.java:2539)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.support.v7.app.ActionBarActivityDelegateICS$WindowCallbackWrapper.dispatchTouchEvent(ActionBarActivityDelegateICS.java:268)
05-25 21:55:59.804: E/AndroidRuntime(4665): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2117)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.View.dispatchPointerEvent(View.java:8005)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4300)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4179)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3714)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3764)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3733)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3844)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3741)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3901)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3714)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3764)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3733)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3741)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3714)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5973)
05-25 21:55:59.804: E/AndroidRuntime(4665): at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.ja
Upvotes: 2
Views: 3062
Reputation: 1195
Do you have set the SwipeRefreshLayout view with a listener ?
For example, if your Fragment/Activity implements SwipeRefreshLayout.OnRefreshListener
, you need to set the SwipeRefreshLayout instance as:
SwipeRefreshLayout layout = (SwipeRefreshLayout)view.findViewById(R.id.swipe);
layout.setOnRefreshListener(this);
This should fix the crash :)
Upvotes: 0
Reputation: 3314
This may be happening because you have the SwipeRefreshLayout
inside the ViewPager, i.e. in view_pager_item.xml
. So when the SwipeRefreshLayout
looks for its context, it will find the Activity or Fragment that contains the ViewPager.
Try moving the the SwipeRefreshLayout
to the Activity or Fragment that contains the ViewPager and see how it goes.
Upvotes: 0
Reputation: 55350
Line 441 of SwipeRefreshLayout.java
is
mListener.onRefresh();
Did you provide an OnRefreshListener
for it?
Upvotes: 1
Reputation: 5962
Go to project->Properties->Java Buildpath and add supporting library V4 and check the library from order and Export tab by ensuring the tick mark is ticked.
Upvotes: 0