Используйте загружаемый шрифт как пользовательский шрифт Snackbar

Опробовал новую функцию с загружаемыми шрифтами для Android с помощью библиотеки поддержки.

Он работал во всем приложении с моими текстовыми представлениями и пользовательскими диалоговыми окнами, но при попытке использовать его в качестве настраиваемой гарнитуры в Snackbar это привело к сбою приложения. Мое использование было таким в диалоге OnClick.

Snackbar snackbar = Snackbar.make(findViewById(android.R.id.content), R.string.snackbar_confirm_removal_or_wait, Snackbar.LENGTH_LONG)
                                    .setAction(R.string.snackbar_delete, new View.OnClickListener() {
                                        @Override
                                        public void onClick(View view) {
                                            String quote = quotes.get(position).quote;
                                            deleteEntry(quote);
                                            quotes.remove(position);
                                            adapter.notifyDataSetChanged();
                                            Snackbar.make(findViewById(android.R.id.content), R.string.snackbar_deleted, Snackbar.LENGTH_SHORT)
                                                    .setDuration(1000)
                                                    .show();
                                        }
                                    })
                                    .setDuration(8500)
                                    .setActionTextColor(ContextCompat.getColor(QuoteActivity2.this, R.color.snackbar_varning_red));
                            TextView textView = (mSnackbar.getView()).findViewById(android.support.design.R.id.snackbar_text);
                            Typeface typeface = ResourcesCompat.getFont(QuoteActivity2.this, R.font.roboto_slab);
                            textView.setTypeface(typeface);
                            snackbar.show();

Мой logcat дает следующий вывод при конкретном сбое

E/AndroidRuntime(24199): java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.support.design.widget.BaseTransientBottomBar.getView()' on a null object reference

Любые мысли о том, как ее решить или использовать загружаемый шрифт в качестве пользовательского шрифта с закусочными?

1 ответ

Решение

Похоже, вы получаете доступ к полю (mSnackbar) в этой строке:

TextView textView = (mSnackbar.getView()).findViewById(android.support.design.R.id.snackbar_text);

Но вы просто присваиваете Snackbar локальной переменной. Возможно в этом проблема?