AR Core ViewRenderable общий вид с диалоговым окном - PullRequest
0 голосов
/ 19 февраля 2020

У меня отображается ViewRenderable на объект ModelRenderable, когда я нажимаю на ModelRenderable, я хочу, чтобы появилось диалоговое окно 2D, чтобы пользователь мог взаимодействовать с представлением.

В настоящее время это работает и выполняется с использованием кода, аналогичного приведенному ниже:

private ModelRenderable notepad;
private ViewRenderable todo_content;
private Dialog dialog;


ModelRenderable.builder()
        .setSource(fragment.getContext(), R.raw.notepad)
        .build().thenAccept(renderable -> notepad = renderable)
        }));



ViewRenderable.builder()
        .setView(fragment.getContext(), R.layout.content_todo__list)
        .build().thenAccept(viewRenderable -> todo_content = viewRenderable) 
        }));




private void addNodesToScene(ArFragment fragment, Anchor anchor, Renderable parent, ViewRenderable child) {
            AnchorNode anchorNode = new AnchorNode(anchor);
            TransformableNode node = new TransformableNode(fragment.getTransformationSystem());
            node.setRenderable(parent);
            node.setParent(anchorNode);
            fragment.getArSceneView().getScene().addChild(anchorNode);



 TransformableNode childNode = new TransformableNode(fragment.getTransformationSystem());
        childNode.setRenderable(child);
        childNode.setParent(node);
        node.setOnTapListener((v, event) -> {
            dialog = new Dialog(getActivity());
            dialog.setContentView(R.layout.content_todo__list);
            dialog.setTitle("This is my custom dialog box");
            dialog.setCancelable(true);
            dialog.show();
        });



   node.select();

}

Проблема в том, что они отображают разные экземпляры одного и того же окна, поэтому изменения, внесенные в 2D Диалоговое окно не отражает мир 3D AR.

dialog.setContentView(todo_content.getView());

Я пробовал следующий код, но он возвращает эту ошибку:

2020-02-19 13:49 : 07.036 13015-13015 / com.team13.onetoonemeetings E / AndroidRuntime: FATAL EXCEPTION: main Процесс: com.team13.onetoonemeetings, PID: 13015 java .lang.IllegalStateException: у указанного дочернего элемента уже есть родительский объект. Сначала вы должны вызвать removeView () у родителя ребенка. в android .view.ViewGroup.addViewInner (ViewGroup. java: 5122) в android .view.ViewGroup.addView (ViewGroup. java: 4953) в android .view.ViewGroup.addView (ViewGroup . java: 4925) в com. android .internal.policy.PhoneWindow.setContentView (PhoneWindow. java: 492) в com. android .internal.policy.PhoneWindow.setContentView (PhoneWindow. java : 473) в android .app.Dialog.setContentView (Dialog. java: 630) в com.team13.onetoonemeetings.ui.home.HomeFragment.lambda $ addNodesToScene $ 7 $ HomeFragment (HomeFragment. java: 345) в com.team13.onetoonemeetings.ui.home .- $$ Lambda $ HomeFragment $ mB0FTU6RYek1IW78GCCaVBzvWmI.onTap (неизвестный источник: 2) в com.google.ar.sceneform.Node.onTouchEvent (SourceFile: 256) в com.google. .sceneform.Node.dispatchTouchEvent (SourceFile: 289) на com.google.ar.sceneform.TouchEventSystem.dispatchTouchEvent (SourceFile: 118) на com.google.ar.sceneform.TouchEventSystem.onTouchEvent (SourceFile: 53) на com.google. ar.sceneform.Scene.onTouchEvent (SourceFile: 127) на com.google.ar.sceneform.SceneView.onT ouchEvent (SourceFile: 24) в android .view.View.dispatchTouchEvent (View. java: 12543) в android .view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup. java: 3159) в android .view .ViewGroup.dispatchTouchEvent (ViewGroup. java: 2844) в android .view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup. java: 3159) в android .view.ViewGroup.dispatchTouchEvent (ViewGroup. java: 2844). ) в android .view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup. java: 3159) в android .view.ViewGroup.dispatchTouchEvent (ViewGroup. java: 2844) в android .view.ViewGroup.dispatchTransformedTouchEvent ( ViewGroup. java: 3159) в android .view.ViewGroup.dispatchTouchEvent (ViewGroup. java: 2844) в android .view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup. java: 3159) в android .view.ViewGroup.dispatchTouchEvent (ViewGroup. java: 2844) в android .view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup. java: 3159) в android .view.ViewGroup.dispatchTouchEvent (ViewGroup. java). : 2844) в android .view.ViewGroup.dispatchTransformedTou chEvent (ViewGroup. java: 3159) в android .view.ViewGroup.dispatchTouchEvent (ViewGroup. java: 2844) в android .view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup. java: 3159) в android .view.ViewGroup.dispatchTouchEvent (ViewGroup. java: 2844) в android .view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup. java: 3159) в android .view.ViewGroup.dispatchTouchEvent (ViewGroup. java: 2844) в android .view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup. java: 3159) в android .view.ViewGroup.dispatchTouchEvent (ViewGroup. java: 2844) в android .view. ViewGroup.dispatchTransformedTouchEvent (ViewGroup. java: 3159) в android .view.ViewGroup.dispatchTouchEvent (ViewGroup. java: 2844) в com. android .internal.policy.DecorView.superDispatchTouchEvent (DecorView. java: 601) в com. android .internal.policy.PhoneWindow.superDispatchTouchEvent (PhoneWindow. java: 1871) в android .app.Activity.dispatchTouchEvent (Activity. java: 3384) в androidx .appcompat.view.WindowCallbackWrapper.dispatchTouchEvent (WindowCallbackWrapper. java: 69) в androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent (WindowCallbackWrapper. java: 69) в com. android. (DecorView. java: 563) в android .view.View.dispatchPointerEvent (View. java: 12791) в android .view.ViewRootImpl $ ViewPostImeInputStage.processPointerEvent (ViewRootImpl. java: 5670) в android .view.ViewRootImpl $ ViewPostImeInputStage.onProcess (ViewRootImpl. java: 5465) в android .view.ViewRootImpl $ InputStage.deliver (ViewRootImpl. java: 4958) в android .Imp.Ro InputStage.onDeliverToNext (ViewRootImpl. java: 5011) в android .view.ViewRootImpl $ InputStage.forward (ViewRootImpl. java: 4977) в android .view.ViewRootImpl $ AsyncInputSot.ot. *: 5114) 202 0-02-19 13: 49: 07.037 13015-13015 / com.team13.onetoonemeetings E / AndroidRuntime: в android .view.ViewRootImpl $ InputStage.apply (ViewRootImpl. java: 4985) в android .view .ViewRootImpl $ AsyncInputStage.apply (ViewRootImpl. java: 5171) в android .view.ViewRootImpl $ InputStage.deliver (ViewRootImpl. java: 4958) в android .view.ViewRootImpl $xtxtTo. . java: 5011) в android .view.ViewRootImpl $ InputStage.forward (ViewRootImpl. java: 4977) в android .view.ViewRootImpl $ InputStage.apply (ViewRootImpl. java: 4985) в android .view.ViewRootImpl $ InputStage.deliver (ViewRootImpl. java: 4958) в android .view.ViewRootImpl.deliverInputEvent (ViewRootImpl. java: 7736) в android .view.ViewRootImpL.Pro ViewRootImpl. java: 7676) в android .view.ViewRootImpl.enqueueInputEvent (ViewRootImpl. java: 7637) в android .view.ViewRootImpl $ WindowInputEventReceiver.onInputEvent * ViewRootImpl: 78 * 78): 4747). 1122 * .view.InputEventReceiver.dispatchInputEvent (InputEventReceiver. java: 197) в android .os.MessageQueue.nativePollOnce (собственный метод) в android .os.MessageQueue.next (MessageQueue. java: 325) в android .os.Looper.l oop (Looper. java: 142) в android .app.ActivityThread.main (ActivityThread. java: 6944) в java .lang.reflect.Method.invoke (собственный метод) в com. android .internal.os.Zygote $ MethodAndArgsCaller.run (Zygote. java: 327) в com. android .internal.os.ZygoteInit.main (ZygoteInit. java: 1374)

Любая помощь?

...