Я пытаюсь получить CustomView клавиатуры из макета файла. Вот код
public class MyInputMethodService extends InputMethodService
implements KeyboardView.OnKeyboardActionListener {
...
@Override
public View onCreateInputView() {
SindhikKeyboardView mInputView = (SindhikKeyboardView) getLayoutInflater().inflate(
R.layout.keyboard, null).findViewById(R.id.keyboard);
mInputView.setOnKeyboardActionListener(this);
setLatinKeyboard(mQwertyKeyboard);
return mInputView;
}
...
}
Но он дает мне ошибку
java .lang.IllegalStateException: У указанного дочернего элемента уже есть родитель. Сначала вы должны вызвать removeView () для родительского объекта ребенка.
Код в файле макета:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<io.github.fahadmaqsood.sindhik.SindhikKeyboardView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:id="@+id/keyboard" />
</RelativeLayout>
Я знаю, что .findViewById()
вызывает проблему. Если я удаляю это и элемент RelativeLayout из файла макета, это работает! но я хочу, чтобы RelativeLayout был там ... как я могу избавиться от этой ошибки? На этом сайте есть ответы, похожие на ошибку, которую я получил. но я не могу найти решение моей проблемы через них.
Редактировать: Полный журнал ошибок
E / AndroidRuntime: FATAL EXCEPTION: main Процесс: io.github.fahadmaqsood .sindhik, PID: 3126 java .lang.IllegalStateException: Указанный дочерний элемент уже имеет родителя. Сначала необходимо вызвать removeView () для родительского элемента дочернего элемента. в android .view.ViewGroup.addViewInner (ViewGroup. java: 3562) в android .view.ViewGroup.addView (ViewGroup. java : 3415) в android .view.ViewGroup.addView (ViewGroup. java: 3391) в android .inputmethodservice.InputMethodService.setInputView (InputMethodService. java: 1260) в android .inputmethodserd.Serm. updateInputViewShown (InputMethodService. java: 1117) в android .inputmethodservice.InputMethodService.showWindowInner (InputMethodService. java: 1471) в android .inputmethodservice.InputMethodWerService.InputMethodService для Windows (10). 1039 * .inputmethodservice.InputMethodService. $ MyHandler.handleMessage (HandlerCaller. java: 40) в android .os.Handler.dispatchMessage (Handler. java: 102) в android .os.Looper.l oop (Loope r. java: 136) на android .app.ActivityThread.main (ActivityThread. java: 5001) на java .lang.reflect.Method.invokeNative (собственный метод) на java .lang. refle.Method.invoke (Method. java: 515) в com. android .internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit. java: 793) в com. android .internal.os. ZygoteInit.main (ZygoteInit. java: 609) в dalvik.system.NativeStart.main (собственный метод)