几个月来,我们一直致力于将 AR 功能添加到我们现有的 APP 中,但进展有限。非常兴奋地阅读了谷歌关于 sceneForm 和 arFragment 的最新进展。我们当前的 APP 包含三个 Fragment,其中一个需要 AR 功能。
它对我们来说是直截了当的,所以我们用 arFragment 替换了我们 APP 中的 Fragment。构建成功并在运行期间停止,几乎没有调试信息。关于我们从 Fragment 升级到 arFragment 的正确步骤有什么建议吗?或者我在这里错过了 arFragment 的要点?
为了在不让您查看我们的长度代码(但对我们很有价值)的情况下显示问题,我们基于 Google 的示例项目构建了一个虚拟项目:HelloSceneform。基本上,我们将静态 Fragment 更改为动态 Fragment。只修改了两个文件,增加了两个文件,后面附上。修改后的项目可以构建成功,但是开始运行时就停止了。
谢谢
彼得
/////// 文件修改,HelloSceneformActivity.java:
import android.support.v4.app.FragmentTransaction;
// private ArFragment arFragment;
private ItemOneFragment arFragment;
//arFragment = (ArFragment) getSupportFragmentManager().findFragmentById(R.id.ux_fragment);
arFragment = ItemOneFragment.newInstance();
//Manually displaying the first fragment - one time only
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.frame_layout, arFragment);
transaction.commit();
/////// 文件修改,activity_ux.xml:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".HelloSceneformActivity">
</FrameLayout>
////// 文件添加fragment_item_one.xml:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/frame_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ItemOneFragment">
</FrameLayout>
/////// 文件添加,ItemOneragment.java:
package com.google.ar.sceneform.samples.hellosceneform;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.google.ar.sceneform.ux.ArFragment;
public class ItemOneFragment extends ArFragment {
public static ItemOneFragment newInstance() {
ItemOneFragment fragment = new ItemOneFragment();
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_item_one, container, false);
}
}