问题描述
我正在尝试将导航抽屉与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;
}
}))
}