【问题标题】:App crashes immediately with error "Error inflating class android.support.text.emoji.widget.EmojiTextView"应用程序立即崩溃并出现错误“错误膨胀类 android.support.text.emoji.widget.EmojiTextView”
【发布时间】:2019-03-08 23:37:53
【问题描述】:

我的应用程序立即因错误而崩溃:

android.view.InflateException: Binary XML file line #11: Error inflating class android.support.text.emoji.widget.EmojiTextView

但只有当我在某些 SDK 上运行我的应用程序时才会出现此错误 - 在大于 24 的 SDK 上运行良好

【问题讨论】:

标签: android kotlin emoji


【解决方案1】:

我也面临同样的问题,现在它已修复并在旧设备中按预期工作。

步骤 - 1: 需要添加依赖,如下:

implementation 'androidx.emoji:emoji:1.1.0'
implementation 'androidx.emoji:emoji-appcompat:1.1.0'
implementation 'androidx.emoji:emoji-bundled:1.1.0'

步骤 - 2: 创建 Application 类并在 Application 类的 onCreate() 方法中添加以下代码,并将 Application 类添加到 AndroidManifest.xml 中

// add below code in onCreate() method
val emojiConfig = BundledEmojiCompatConfig(this)
        emojiConfig.setReplaceAll(true)
            .registerInitCallback(object : InitCallback() {
                override fun onInitialized() {
                    Timber.d( "EmojiCompat initialized")
                }

                override fun onFailed(throwable: Throwable?) {
                    Timber.d("EmojiCompat initialization failed $throwable" )
                }
        })
    EmojiCompat.init(emojiConfig)

步骤 - 3: 现在您可以在 xml 中添加视图:

                   <androidx.emoji.widget.EmojiAppCompatTextView
                    android:id="@+id/tvEmoji"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:singleLine="true"
                    android:text="@string/str_following"
                    android:textColor="@color/colorLabelUse"
                    android:textSize="14sp" />

步骤 - 4: 现在您可以创建视图实例,并且它支持所有具有向后兼容性的表情符号。您可以将表情符号添加为字符串,如下所示:

    private static final String EMOJI = "\uD83D\uDC69\u200D\uD83D\uDCBB";//?‍?
    // TextView variant provided by EmojiCompat library
    EmojiAppCompatTextView emojiTextView = findViewById(R.id.tvEmoji);
    emojiTextView.setText(getString(R.string.emoji_text_view, EMOJI));
    emojiTextView.setText(String.format("Emoji EditText %s",EMOJI));


==================ENJOY========================

【讨论】:

    【解决方案2】:

    只要在你使用 EmojiTextView 或 EmojiEditText 时在 super.onCreate(...) 之后添加这些:

    FontRequest fontRequest = new FontRequest(
      "com.google.android.gms.fonts",
      "com.google.android.gms",
      "Noto Color Emoji Compat",
      R.array.com_google_android_gms_fonts_certs);
    EmojiCompat.Config config = new FontRequestEmojiCompatConfig(this, fontRequest);
    EmojiCompat.init(config);
    

    【讨论】:

    • 如何解决:R.array.com_google_android_gms_fonts_certs
    猜你喜欢
    • 1970-01-01
    • 2014-03-26
    • 2012-09-18
    • 1970-01-01
    • 2020-01-01
    • 2019-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多