在RecyclerView中单击时,Admob原生广告会崩溃

时间:2017-07-20 11:21:48

标签: android android-recyclerview admob native-ads

我有一项活动,展示了recyclerView以及Native Admob广告。广告正在加载,一切正常,但当有人点击广告时,应用就会崩溃。此外,崩溃不是每次都发生,而是每10次发生一次。

这是日志:

                                                                      Process: aculix.com.rakshabandhan, PID: 16098
                                                                      java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.LinearLayout.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
                                                                          at aculix.com.rakshabandhan.Fragments.OneFragment$2.onItemClick(OneFragment.java:133)
                                                                          at aculix.com.rakshabandhan.RecyclerItemClickListener.onInterceptTouchEvent(RecyclerItemClickListener.java:36)
                                                                          at android.support.v7.widget.RecyclerView.dispatchOnItemTouchIntercept(RecyclerView.java:2628)
                                                                          at android.support.v7.widget.RecyclerView.onInterceptTouchEvent(RecyclerView.java:2674)
                                                                          at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2175)
                                                                          at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
                                                                          at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
                                                                          at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
                                                                          at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
                                                                          at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
                                                                          at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
                                                                          at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
                                                                          at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
                                                                          at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
                                                                          at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
                                                                          at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
                                                                          at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
                                                                          at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
                                                                          at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
                                                                          at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
                                                                          at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
                                                                          at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:416)
                                                                          at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1808)
                                                                          at android.app.Activity.dispatchTouchEvent(Activity.java:3065)
                                                                          at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:71)
                                                                          at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:71)
                                                                          at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:378)
                                                                          at android.view.View.dispatchPointerEvent(View.java:10244)
                                                                          at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4444)
                                                                          at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4312)
                                                                          at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3859)
                                                                          at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3912)
                                                                          at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3878)
                                                                          at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4005)
                                                                          at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3886)
                                                                          at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4062)
                                                                          at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3859)
                                                                          at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3912)
                                                                          at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3878)
                                                                          at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3886)
                                                                          at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3859)
                                                                          at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6253)
                                                                          at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6227)
                                                                          at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6188)
                                                                          at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6356)
                                                                          at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
                                                                          at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method)
                                                                          at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:176)

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。为了处理点击,我使用了另一个类,如下所示。

           Reset-Digital  Channel 1-Digital
   Time [s]                                   
   -0.002204            1.0                0.0
   -0.001124            0.0                NaN
   -0.000000            1.0                NaN
    0.000551            0.0                NaN
              ...                  ...
   -0.001505            NaN                1.0
    0.000302            NaN                0.0
    0.000932            NaN                1.0
    0.002538            NaN                0.0
              ...                    ...

然后在片段中,我正在设置点击监听器,如下所示

           Reset-Digital  Channel 1-Digital
   Time [s]                                   
    0.000302            NaN                0.0
    0.000551            0.0                NaN
    0.000932            NaN                1.0
    0.002538            NaN                0.0
   -0.000000            1.0                NaN
   -0.001124            0.0                NaN
   -0.001505            NaN                1.0
   -0.002204            1.0                0.0
              ...                    ...

现在我正在处理适配器内的点击监听器,如下所示,它运行正常。

public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener {
private OnItemClickListener mListener;

public interface OnItemClickListener {
    public void onItemClick(View view, int position);
}

GestureDetector mGestureDetector;

public RecyclerItemClickListener(Context context, OnItemClickListener listener) {
    mListener = listener;
    mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
        @Override
        public boolean onSingleTapUp(MotionEvent e) {
            return true;
        }
    });
}

@Override
public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e) {
    View childView = view.findChildViewUnder(e.getX(), e.getY());
    if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) {
        mListener.onItemClick(childView, view.getChildAdapterPosition(childView));
    }
    return false;
}

@Override
public void onTouchEvent(RecyclerView view, MotionEvent motionEvent) {
}

@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {

}}