Пользовательская клавиатура Android. Следующие классы не могли быть созданы:

Я создал пользовательскую клавиатуру для своего приложения. Вы можете увидеть код для моей клавиатуры ниже. Я получаю сообщение об ошибке в xml viewer Аналогичный вопрос задан Android – Неподдерживаемый сервис: аудио Но никто не ответил.

Код для моей пользовательской клавиатуры

public class KeyboardViewExtend extends KeyboardView implements KeyboardView.OnKeyboardActionListener { private SymjaBase _parent = null; private Keyboard _myKeyboard = null; public KeyboardViewExtend(Context c, AttributeSet atts, int defStyle) { super(c, atts, defStyle); // Tip: Use View.isInEditMode() in your custom views to skip code when shown in Eclipse if (!isInEditMode()) { _parent = (SymjaBase)c; } init(c); } public KeyboardViewExtend(Context c, AttributeSet atts) { super(c, atts); // Tip: Use View.isInEditMode() in your custom views to skip code when shown in Eclipse if (!isInEditMode()) { _parent = (SymjaBase)c; } init(c); } private void init(Context c) { setOnKeyboardActionListener(this); setEnabled(true); setPreviewEnabled(true); setFocusable(false); setFocusableInTouchMode(false); setBackgroundColor( Color.BLACK ); LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, 0); lp.gravity = Gravity.BOTTOM; setLayoutParams(lp); makeKeyboardView(); } 

Ошибка в xml Graphic Viewer

 The following classes could not be instantiated: - org.matheclipse.android.KeyboardViewExtend (Open Class, Show Error Log) See the Error Log (Window > Show View) for more details. Tip: Use View.isInEditMode() in your custom views to skip code when shown in Eclipse java.lang.UnsupportedOperationException: Unsupported Service: audio at com.android.layoutlib.bridge.android.BridgeContext.getSystemService(BridgeContext.java:448) at android.inputmethodservice.KeyboardView.<init>(KeyboardView.java:376) at android.inputmethodservice.KeyboardView.<init>(KeyboardView.java:279) at org.matheclipse.android.KeyboardViewExtend.<init>(KeyboardViewExtend.java:35) at sun.reflect.NativeConstructorAccessorImpl.newInstance0( at sun.reflect.NativeConstructorAccessorImpl.newInstance( at sun.reflect.DelegatingConstructorAccessorImpl.newInstance( at java.lang.reflect.Constructor.newInstance( at com.android.ide.eclipse.adt.internal.editors.layout.ProjectCallback.instantiateClass(ProjectCallback.java:413) at com.android.ide.eclipse.adt.internal.editors.layout.ProjectCallback.loadView(ProjectCallback.java:170) at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:207) at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:135) at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:746) at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64) at android.view.LayoutInflater.rInflate(LayoutInflater.java:718) at android.view.LayoutInflater.inflate(LayoutInflater.java:489) at android.view.LayoutInflater.inflate(LayoutInflater.java:372) 

Пожалуйста, помогите мне с этим.

См. Этот вопрос и ответы: Android – Неподдерживаемый сервис: аудио

Короче: это ошибка источника android. Но я нашел решение, как это исправить.

Используйте KeyboardViewFix качестве замены KeyboardView :

 public class KeyboardViewFix extends KeyboardView { public static boolean inEditMode = true; @TargetApi(21) // Build.VERSION_CODES.L public KeyboardViewFix(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(inEditMode ? new ContextWrapperInner(context) : context, attrs, defStyleAttr, defStyleRes); } public KeyboardViewFix(Context context, AttributeSet attrs, int defStyleAttr) { super(inEditMode ? new ContextWrapperInner(context) : context, attrs, defStyleAttr); } public KeyboardViewFix(Context context, AttributeSet attrs) { super(inEditMode ? new ContextWrapperInner(context) : context, attrs); } public static class ContextWrapperInner extends ContextWrapper { Context base; public ContextWrapperInner(Context base) { super(base); this.base = base; } public Object getSystemService(String name) { return Context.AUDIO_SERVICE.equals(name) ? null : base.getSystemService(name); } } } 

Одна заметка: при запуске своего приложения перед любым другим кодом вам нужно установить KeyboardViewFix.inEditMode = false; Или вы можете получить некоторые ошибки.

Intereting Posts
RxJava и Retrofit – повышение пользовательских исключений в зависимости от ответа сервера Пейзаж предварительный просмотр макета android xml в Eclipse Android Studio, не отображающая тег SigninButton <item>, требует атрибута «android: color» Есть ли что-то похожее на систему ресурсов Android в меньшем масштабе? Gradle Sync не заканчивается после обновления 0.4.6 Как установить drawerlayout ниже панели инструментов с расположением координатора Подтвердите электронную почту внутри EditText Использование планировщика заданий в Android API <21 Пример приложения для приложения Google для приложений, Оценка R.id.home Состояние нажатой кнопки Android Android: растровые изображения, SoftReferences и OOM? Как создать пользовательский интерфейс, как новый рынок или Google plus? Получение "вызвано: java.lang.VerifyError:" Можно ли использовать не только строку состояния, но и навигацию над нижним колонтитулом для фонового изображения