在NavigationDrawer和SwipeViewTabs中,ViewPager2不得为null

问题描述

我正在尝试将导航抽屉与swipeview选项卡链接,问题是logcat告诉我Viewpager不能为null,我试图通过多种方式解决此问题,但不能解决

PageAdaper.kt

[best WooCommerce payment gateways][1]

片段

  class ViewPagerAdapter(fragmanetActivity: TabFragment): FragmentStateAdapter(fragmanetActivity) {
    
        override fun getItemCount(): Int = 3
    
        override fun createFragment(position: Int): Fragment {
            when (position) {
                0 -> return FirstFragment()   
                1 -> return SecondFragment()
                2 -> return ThirdFragment()
            }
            return Fragment()
        }
    }

contain_main.xml

我将此文件与(类TabFragment:Fragment())链接

class TabFragment : Fragment() {
    private val adapter by lazy { ViewPagerAdapter(this) }
    override fun onCreateView(
        inflater: LayoutInflater,container: ViewGroup?,savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        val x = inflater.inflate(R.layout.contain_main,container,false)

        pager.adapter = adapter // This is the error

        TabLayoutMediator(tab_layout,pager) { tab,position ->
            when (position) {
                0 -> tab.text = "option1"
                1 -> tab.text = "option2"
                2 -> tab.text = "option3"
            }
        }.attach()
        return x
   }
}

解决方法

在您的类TabFragment中,您尝试访问寻呼机视图。由于您使用的是onCreateView方法,因此综合程序不知道如何访问视图并为您提供有关分页器的参考。 您可以在onViewCreated和更高版本的回调中执行此操作,也可以使用val x访问寻呼机。MikibeMiki

代码:

intercept(request: HttpRequest<any>,next: HttpHandler): Observable<HttpEvent<any>> 
{
    
    return next.handle(request).pipe(catchError(err => 
    {
        const error = (err.error?err.error.message:null) || err.statusText;

        switch (err.status) {
            case 401:
            {
                // token expired -> goto login,dont return error
                this.appService.clearUserSession();
                this.router.navigate(['login']);
                <<<<<<<<<<<<<<< HERE I DON'T WANT TO THROW AN ERROR,WHAT TO RETURN ?
            }
            break;
            case 500:
            {
                return throwError(error);
            }
            break;
            default:
            {
                  if(error!="OK")
                  {
                       return throwError(error);
                  }
                  else
                  {
                       // some errors are "OK",just ignore them
                       <<<<<<<<<<<<<<< HERE I DON'T WANT TO THROW AN ERROR,WHAT TO RETURN ?
                  }
            }
            break;
       }
      
    }))

  }

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...