片段中的LayoutInflator错误“不兼容的类型”[重复]

Posted

技术标签:

【中文标题】片段中的LayoutInflator错误“不兼容的类型”[重复]【英文标题】:LayoutInflator error "incompatible types" in fragment [duplicate] 【发布时间】:2018-01-20 21:19:01 【问题描述】:

Typeface hero = Typeface.createFromAsset(getContext().getAssets(),"fonts/Hero Light.otf");

    for (int i = 0; i < tabLayout.getTabCount(); i++) 
        //noinspection ConstantConditions
   TextView tv=
  (TextView)LayoutInflater.from(this).inflate(R.layout.item_tab,null);
        tv.setTypeface(hero);
        tabLayout.getTabAt(i).setCustomView(tv);

    

我在“this”处收到错误,提示类型不兼容。 Mainfragment 无法转换为上下文。 请帮忙,因为这是我在 Tablayout 上更改字体的唯一可行方法。

【问题讨论】:

如果此代码在片段中,则使用getActivity() 而不是此 题名和正文题不一样。请不要,Fragment 不是内部类,***.com/questions/22190797/… 【参考方案1】:

如果您的代码在 Fragment 中,请使用 getActivity(),因为这不适用于内部类。

【讨论】:

【参考方案2】:

这就是您更改字体的方式。 注意:我假设您使用的字体是兼容的。

第一种方式:

Typeface face = Typeface.createFromAsset(getAssets(),
            "fonts/epimodem.ttf");
textView.setTypeface(face);

第二种方式:

textView.setTypeface(Typeface.create("sans-serif-light", Typeface.NORMAL));

无法将 Mainfragment 转换为上下文

getActivity().getApplicationContext() 替换getContext()

要访问资源,您首先要访问您的 Activity,您可以在其中通过执行 getActivity() 设置片段。要获得与 Activity 相同的应用程序上下文,请执行 getActivity().getApplicationContext()

【讨论】:

【参考方案3】:

this 在内部类中不起作用。如果它是片段然后尝试 getActivity() 和活动尝试 YourActivity.this

【讨论】:

以上是关于片段中的LayoutInflator错误“不兼容的类型”[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Android:片段无法转换为上下文[重复]

片段对话框中的片段膨胀引发错误“片段未创建视图”

不兼容的类型:条件表达式 void 中的错误类型无法转换为布尔值。请协助

Sklearn:异质特征的FeatureUnion与管道中的分类器产生不兼容的行尺寸错误

片段事务中的实例化错误

viewpager 中的片段,未找到视图错误