Android Typeface.createFromAsset崩溃自定义文本视图

Android Typeface.createFromAsset崩溃自定义文本视图,android,textview,android-typeface,roboto,Android,Textview,Android Typeface,Roboto,我想在我的应用程序中实现Roboto字体,所以按照stackoverflow的指南,我创建了两个新视图,一个用于AutoCompleteTextView,另一个用于常规TextView 当使用我创建的AutoCompleteTextView布局时,一切都可以正常工作,如果我添加没有字体的TextView,也可以正常工作,但是如果我为TextView指定字体,我的应用程序会抛出以下执行选项: android.view.InflateException: Binary XML file line #

我想在我的应用程序中实现Roboto字体,所以按照stackoverflow的指南,我创建了两个新视图,一个用于AutoCompleteTextView,另一个用于常规TextView

当使用我创建的AutoCompleteTextView布局时,一切都可以正常工作,如果我添加没有字体的TextView,也可以正常工作,但是如果我为TextView指定字体,我的应用程序会抛出以下执行选项:

android.view.InflateException: Binary XML file line #53: Binary XML file line #53: Error inflating class layouttesting.busalarmclock.com.busalarmclocktesting.Views.TypeFaceTextView
我做了一些挖掘,明白了这条线

Typeface typeface = Typeface.createFromAsset(context.getAssets(), "fonts/" + fontName);
正在破坏我的应用程序,尽管我在另一个视图中使用了相同的代码,而且效果很好

完整文本视图:

public TypeFaceTextView(Context context) {
    super(context);
}

public TypeFaceTextView(Context context, AttributeSet attrs) {
    super(context, attrs);

    //Typeface.createFromAsset doesn't work in the layout editor. Skipping...
    if (isInEditMode()) {
        return;
    }

    TypedArray styledAttrs = context.obtainStyledAttributes(attrs, R.styleable.TypeFaceTextView);
    String fontName = styledAttrs.getString(R.styleable.TypeFaceTextView_typeface);
    styledAttrs.recycle();

    if (fontName != null) {
        Typeface typeface = Typeface.createFromAsset(context.getAssets(), "fonts/" + fontName);
        setTypeface(typeface);
    }
}


public TypeFaceTextView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
}
完整的AutoCompleteTextView代码:

public TypeFaceAutoCompleteTextView(Context context) {
    super(context);
}

public TypeFaceAutoCompleteTextView(Context context, AttributeSet attrs) {
    super(context, attrs);

    if(isInEditMode())
    {
        return;
    }

    TypedArray styledAttributes = context.obtainStyledAttributes(attrs, R.styleable.TypeFaceAutoCompleteTextView);
    String fontName = styledAttributes.getString(R.styleable.TypeFaceAutoCompleteTextView_autocomplete_typeface);
    styledAttributes.recycle();

    if(fontName != null)
    {
        Typeface typeface = Typeface.createFromAsset(context.getAssets(), "fonts/"+fontName);
        setTypeface(typeface);
    }
}

public TypeFaceAutoCompleteTextView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
}
编辑: 我只是注意到,只有当我把一个普通的文本视图放在它前面时,它才会发生

添加完整的崩溃报告-请注意,没有由..引起的

06-16 22:12:52.876 21453-21453/layouttesting.busalarmclock.com.busalarmclocktesting E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                                  Process: layouttesting.busalarmclock.com.busalarmclocktesting, PID: 21453
                                                                                                  Theme: themes:{default=overlay:com.thoughtlesskyle.theme.roam2, iconPack:com.thoughtlesskyle.theme.roam2, fontPkg:com.thoughtlesskyle.theme.roam2, com.android.systemui=overlay:com.thoughtlesskyle.theme.roam2, com.android.systemui.navbar=overlay:com.thoughtlesskyle.theme.roam2}
                                                                                                  android.view.InflateException: Binary XML file line #53: Binary XML file line #53: Error inflating class layouttesting.busalarmclock.com.busalarmclocktesting.Views.TypeFaceTextView
                                                                                                      at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
                                                                                                      at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
                                                                                                      at layouttesting.busalarmclock.com.busalarmclocktesting.Fragments.SearchLineFragment.onCreateView(SearchLineFragment.java:22)
                                                                                                      at android.support.v4.app.Fragment.performCreateView(Fragment.java:2074)
                                                                                                      at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
                                                                                                      at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1286)
                                                                                                      at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:758)
                                                                                                      at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1632)
                                                                                                      at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:637)
                                                                                                      at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:143)
                                                                                                      at android.support.v4.view.ViewPager.populate(ViewPager.java:1235)
                                                                                                      at android.support.v4.view.ViewPager.populate(ViewPager.java:1083)
                                                                                                      at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1609)
                                                                                                      at android.view.View.measure(View.java:18799)
                                                                                                      at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715)
                                                                                                      at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
                                                                                                      at android.view.View.measure(View.java:18799)
                                                                                                      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
                                                                                                      at android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:669)
                                                                                                      at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:736)
                                                                                                      at android.view.View.measure(View.java:18799)
                                                                                                      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
                                                                                                      at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
                                                                                                      at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135)
                                                                                                      at android.view.View.measure(View.java:18799)
                                                                                                      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
                                                                                                      at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1458)
                                                                                                      at android.widget.LinearLayout.measureVertical(LinearLayout.java:746)
                                                                                                      at android.widget.LinearLayout.onMeasure(LinearLayout.java:629)
                                                                                                      at android.view.View.measure(View.java:18799)
                                                                                                      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
                                                                                                      at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
                                                                                                      at android.view.View.measure(View.java:18799)
                                                                                                      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
                                                                                                      at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1458)
                                                                                                      at android.widget.LinearLayout.measureVertical(LinearLayout.java:746)
                                                                                                      at android.widget.LinearLayout.onMeasure(LinearLayout.java:629)
                                                                                                      at android.view.View.measure(View.java:18799)
                                                                                                      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
                                                                                                      at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
                                                                                                      at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2899)
                                                                                                      at android.view.View.measure(View.java:18799)
                                                                                                      at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2108)
                                                                                                      at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1224)
                                                                                                      at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1460)
                                                                                                      at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1115)
                                                                                                      at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6023)
                                                                                                      at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
                                                                                                      at android.view.Choreographer.doCallbacks(Choreographer.java:670)
                                                                                                    at and
编辑编辑 它在冷交换后工作过一次,因为它更改了rez ID 现在它不再起作用了

编辑
当我清理并重新运行时,它工作正常,我想这是一个即时运行的bug?

请发布整个Java堆栈跟踪,包括由stanzas.added引起的任何
,尽管没有由stanza引起的。.我非常自信,堆栈跟踪的内容不止这些,包括一个或多个由
部分引起的
,显示实际的基础异常。它似乎在一个词的中间被切掉,但这就是LogCAT所显示的全部内容。你知道如何显示丢失的信息吗?当我重新启动Android Studio时,它似乎工作得很好,只有当我做了一些更改并且Instant run工作时,它才会崩溃。可能是即时运行做了一些不好的事情吗?如果你在每个文本视图实例中创建一个新的字体,当你滚动更复杂的内容时,你的应用程序会像母狗一样滞后。已经存在,修复了该问题。请发布整个Java堆栈跟踪,包括由
stanzas.added引起的任何
,尽管没有由stanza引起的。我非常自信,堆栈跟踪的内容不止这些,包括一个或多个由
部分引起的
,显示实际的基础异常。它似乎在一个词的中间被切掉,但这就是LogCAT所显示的全部内容。你知道如何显示丢失的信息吗?当我重新启动Android Studio时,它似乎工作得很好,只有当我做了一些更改并且Instant run工作时,它才会崩溃。可能是即时运行做了一些不好的事情吗?如果你在每个文本视图实例中创建一个新的字体,当你滚动更复杂的内容时,你的应用程序会像母狗一样滞后。我去过那里,修好了。