java - 如何获取 fragment 中的 Activity ?

标签 java android android-recyclerview android-fragmentactivity

我有两个问题。

  1. 我在类中使用“activity”并将数据发送到 fragment 中的该类。如何在 fragment 中提交 Activity?

  2. 如何一起使用 swipemenulistview 和 recyclerview?我要做一个滚动 recyclerview 但我不能,我应该使用哪个库或者我应该遵循哪条路径?

HomeFragment.java

touchListener = new RecyclerTouchListener(
                    /*(HERE I TRIED) (IS THAT CORRECT?)*/ getActivity(),
                    allListRecyclerView
                );
touchListener
   .setClickable(new RecyclerTouchListener.OnRowClickListener() {
       @Override
       public void onRowClicked(int position) {
           Toast.makeText(getContext(), allListModels.get(position).getListname(), Toast.LENGTH_SHORT).show();
       }

       @Override
       public void onIndependentViewClicked(int independentViewID, int position) {

       }
   })
   .setSwipeOptionViews(R.id.delete_task,R.id.edit_task)
   .setSwipeable(R.id.rowFG, R.id.rowBG, new RecyclerTouchListener.OnSwipeOptionsClickListener() {
       @Override
       public void onSwipeOptionClicked(int viewID, int position) {
           switch (viewID){
               case R.id.delete_task:
                   allListModels.remove(position);
                   homeListAdapter.setTaskList(allListModels);
                   break;
               case R.id.edit_task:
                   Toast.makeText(getContext(),"Edit Not Available",Toast.LENGTH_SHORT).show();
                   break;

           }
       }
   });
}

RecyclerTouchListener.java

public RecyclerTouchListener(Activity a, RecyclerView recyclerView) {
    this.act = a;
    /*...*/
}

日志猫:

019-07-30 12:48:54.252 17839-17839/com.example.forev.huaweitodolist E/InputEventReceiver: Exception dispatching input event.
2019-07-30 12:48:54.252 17839-17839/com.example.forev.huaweitodolist E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
2019-07-30 12:48:54.253 17839-17839/com.example.forev.huaweitodolist E/MessageQueue-JNI: java.lang.NullPointerException: Attempt to invoke interface method 'boolean android.support.v7.widget.RecyclerView$OnItemTouchListener.onInterceptTouchEvent(android.support.v7.widget.RecyclerView, android.view.MotionEvent)' on a null object reference
        at android.support.v7.widget.RecyclerView.dispatchOnItemTouchIntercept(RecyclerView.java:2932)
        at android.support.v7.widget.RecyclerView.onInterceptTouchEvent(RecyclerView.java:2978)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2175)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
        at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:413)
        at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1808)
        at android.app.Activity.dispatchTouchEvent(Activity.java:3061)
        at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
        at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
        at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:375)
        at android.view.View.dispatchPointerEvent(View.java:10243)
        at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4438)
        at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4306)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3853)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3906)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3872)
        at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3999)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3880)
        at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4056)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3853)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3906)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3872)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3880)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3853)
        at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6246)
        at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6220)
        at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6181)
        at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6349)
        at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
        at android.os.MessageQueue.nativePollOnce(Native Method)
        at android.os.MessageQueue.next(MessageQueue.java:323)
2019-07-30 12:48:54.253 17839-17839/com.example.forev.huaweitodolist D/AndroidRuntime: Shutting down VM


    --------- beginning of crash
2019-07-30 12:48:54.253 17839-17839/com.example.forev.huaweitodolist E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.forev.huaweitodolist, PID: 17839
    java.lang.NullPointerException: Attempt to invoke interface method 'boolean android.support.v7.widget.RecyclerView$OnItemTouchListener.onInterceptTouchEvent(android.support.v7.widget.RecyclerView, android.view.MotionEvent)' on a null object reference
        at android.support.v7.widget.RecyclerView.dispatchOnItemTouchIntercept(RecyclerView.java:2932)
        at android.support.v7.widget.RecyclerView.onInterceptTouchEvent(RecyclerView.java:2978)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2175)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2264)
        at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:413)
        at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1808)
        at android.app.Activity.dispatchTouchEvent(Activity.java:3061)
        at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
        at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
        at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:375)
        at android.view.View.dispatchPointerEvent(View.java:10243)
        at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4438)
        at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4306)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3853)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3906)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3872)
        at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3999)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3880)
        at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4056)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3853)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3906)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3872)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3880)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3853)
        at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6246)

最佳答案

在 Activity 中创建一个静态方法,如下所示

public static void getActivity()
 {
      // call this wer you want and get data
 }

关于java - 如何获取 fragment 中的 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57269017/

相关文章:

android - 如何在 RecyclerView 上排序期间提供自定义动画(notifyDataSetChanged)

java - 减去圆弧的内半径/部分以实现环形进度条

java - sonarqube 6.3 错误 could-not-complete-symbolic-execution-reached-limit-of-16000 steps

java - 如何打印变量的类型 - 当变量为整数时出错

java - Socket Programming -Java - 许多客户一个套接字问题

java - 不显示 MotionEvent.ACTION_UP 或 MotionEvent.ACTION_CANCEL

java - 从基类继承 Grails 域类属性

java - Android:如何将 fragment 加载到 FrameLayout 中

android - 使用 StaggeredGridLayoutManager 时阻止项目四处移动

java - 从列表中删除项目而不是从 RecyclerView 中删除它们?