Я получаю следующую ошибку, вызванную React Native. Я почти уверен, что это связано с пользовательским представлением, которое я использую.
Представление генерируется некоторым кодом C++ (через OpenGL), который добавляется в ViewGroup, а затем включается в представление React Native. При первой загрузке приложения все в порядке. Однако, когда некоторые данные изменяются, кажется, что React хочет перезагрузить представление и создать новый экземпляр представления. Я проверяю, есть ли у представления родительский элемент, и если да, удаляю его, прежде чем возвращать представление. Однако после того, как пользователь выбирает новые данные, когда представления собираются обновиться, происходит сбой.
Код ViewManager выглядит следующим образом:
public class ReactJuceViewManager extends SimpleViewManager {
public static final String REACT_CLASS = "ReactJuceView";
private ReactApplicationContext reactContext;
public ReactJuceViewManager(ReactApplicationContext reactContext)
{
super();
this.reactContext = reactContext;
}
@Override
public String getName()
{
return REACT_CLASS;
}
@Override
protected JuceViewHolder createViewInstance(ThemedReactContext themedReactContext) {
JuceBridge juceBridge = JuceBridge.getInstance();
//JuceBridge manages the a HashMap of `JuceViewHolder`s, never deleting them once created
Log.d("ReactJuceViewManager", "createViewInstance");
JuceViewHolder v = juceBridge.getViewForComponent("Tuner", themedReactContext);
Log.d("JuceViewHolder", v.getTag().toString());
ViewGroup parent = (ViewGroup) v.getParent();
if (parent != null)
{
Log.d("ReactJuceViewManager", "JuceViewHolder parent: " + v.getParent().toString());
// Remove from parent
Log.i("ReactJuceViewManager", "Removing JuceViewHolder instance from previous parent");
parent.removeView(v);
}
else
{
Log.d("ReactJuceViewManager", "JuceViewHolder parent: null");
}
return v;
}
}
.. и вот трассировка стека:
E/unknown:React: Exception in native call from JS
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
at android.view.ViewGroup.addViewInner(ViewGroup.java:4309)
at android.view.ViewGroup.addView(ViewGroup.java:4145)
at android.view.ViewGroup.addView(ViewGroup.java:4086)
at com.facebook.react.views.view.ReactViewManager.addView(ReactViewManager.java:196)
at com.facebook.react.views.view.ReactViewManager.addView(ReactViewManager.java:39)
at com.facebook.react.uimanager.NativeViewHierarchyManager.manageChildren(NativeViewHierarchyManager.java:384)
at com.facebook.react.uimanager.UIViewOperationQueue$ManageChildrenOperation.execute(UIViewOperationQueue.java:175)
at com.facebook.react.uimanager.UIViewOperationQueue$2.run(UIViewOperationQueue.java:782)
at com.facebook.react.uimanager.UIViewOperationQueue.flushPendingBatches(UIViewOperationQueue.java:829)
at com.facebook.react.uimanager.UIViewOperationQueue.access$1500(UIViewOperationQueue.java:44)
at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(UIViewOperationQueue.java:868)
at com.facebook.react.uimanager.GuardedChoreographerFrameCallback.doFrame(GuardedChoreographerFrameCallback.java:32)
at com.facebook.react.uimanager.ReactChoreographer$ReactChoreographerDispatcher.doFrame(ReactChoreographer.java:131)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:856)
at android.view.Choreographer.doCallbacks(Choreographer.java:670)
at android.view.Choreographer.doFrame(Choreographer.java:603)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Подробнее здесь: https://stackoverflow.com/questions/395 ... s-a-parent
Нативное исключение React: у указанного дочернего элемента уже есть родительский элемент. ⇐ Android
Форум для тех, кто программирует под Android
1772984823
Anonymous
Я получаю следующую ошибку, вызванную React Native. Я почти уверен, что это связано с пользовательским представлением, которое я использую.
Представление генерируется некоторым кодом C++ (через OpenGL), который добавляется в ViewGroup, а затем включается в представление React Native. При первой загрузке приложения все в порядке. Однако, когда некоторые данные изменяются, кажется, что React хочет перезагрузить представление и создать новый экземпляр представления. Я проверяю, есть ли у представления родительский элемент, и если да, удаляю его, прежде чем возвращать представление. Однако после того, как пользователь выбирает новые данные, когда представления собираются обновиться, происходит сбой.
Код ViewManager выглядит следующим образом:
public class ReactJuceViewManager extends SimpleViewManager {
public static final String REACT_CLASS = "ReactJuceView";
private ReactApplicationContext reactContext;
public ReactJuceViewManager(ReactApplicationContext reactContext)
{
super();
this.reactContext = reactContext;
}
@Override
public String getName()
{
return REACT_CLASS;
}
@Override
protected JuceViewHolder createViewInstance(ThemedReactContext themedReactContext) {
JuceBridge juceBridge = JuceBridge.getInstance();
//JuceBridge manages the a HashMap of `JuceViewHolder`s, never deleting them once created
Log.d("ReactJuceViewManager", "createViewInstance");
JuceViewHolder v = juceBridge.getViewForComponent("Tuner", themedReactContext);
Log.d("JuceViewHolder", v.getTag().toString());
ViewGroup parent = (ViewGroup) v.getParent();
if (parent != null)
{
Log.d("ReactJuceViewManager", "JuceViewHolder parent: " + v.getParent().toString());
// Remove from parent
Log.i("ReactJuceViewManager", "Removing JuceViewHolder instance from previous parent");
parent.removeView(v);
}
else
{
Log.d("ReactJuceViewManager", "JuceViewHolder parent: null");
}
return v;
}
}
.. и вот трассировка стека:
E/unknown:React: Exception in native call from JS
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
at android.view.ViewGroup.addViewInner(ViewGroup.java:4309)
at android.view.ViewGroup.addView(ViewGroup.java:4145)
at android.view.ViewGroup.addView(ViewGroup.java:4086)
at com.facebook.react.views.view.ReactViewManager.addView(ReactViewManager.java:196)
at com.facebook.react.views.view.ReactViewManager.addView(ReactViewManager.java:39)
at com.facebook.react.uimanager.NativeViewHierarchyManager.manageChildren(NativeViewHierarchyManager.java:384)
at com.facebook.react.uimanager.UIViewOperationQueue$ManageChildrenOperation.execute(UIViewOperationQueue.java:175)
at com.facebook.react.uimanager.UIViewOperationQueue$2.run(UIViewOperationQueue.java:782)
at com.facebook.react.uimanager.UIViewOperationQueue.flushPendingBatches(UIViewOperationQueue.java:829)
at com.facebook.react.uimanager.UIViewOperationQueue.access$1500(UIViewOperationQueue.java:44)
at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(UIViewOperationQueue.java:868)
at com.facebook.react.uimanager.GuardedChoreographerFrameCallback.doFrame(GuardedChoreographerFrameCallback.java:32)
at com.facebook.react.uimanager.ReactChoreographer$ReactChoreographerDispatcher.doFrame(ReactChoreographer.java:131)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:856)
at android.view.Choreographer.doCallbacks(Choreographer.java:670)
at android.view.Choreographer.doFrame(Choreographer.java:603)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Подробнее здесь: [url]https://stackoverflow.com/questions/39535844/react-native-exception-the-specified-child-already-has-a-parent[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия