Внедрить карту мира Раджавали во фрагмент Android

У меня проблемы с включением карты мира на фрагменте Android, так как действие выполняется следующим образом:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final RajawaliSurfaceView surface = new RajawaliSurfaceView(this);
    surface.setFrameRate(60.0);
    surface.setRenderMode(IRajawaliSurface.RENDERMODE_CONTINUOUSLY);

    // Add mSurface to your root view
    addContentView(surface, new  ActionB

ar.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT));

    renderer = new Renderer(this);
    surface.setSurfaceRenderer(renderer);
}

Но когда я хочу сделать это во фрагменте выдает ошибку

addContentView(surface, new  ActionBar.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT));


  @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        final RajawaliSurfaceView surface = new RajawaliSurfaceView(getActivity());
        surface.setFrameRate(60.0);
        surface.setRenderMode(IRajawaliSurface.RENDERMODE_CONTINUOUSLY);

        // Add mSurface to your root view
        addContentView(surface, new ActionBar.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT));

        renderer = new Renderer(getActivity());
        surface.setSurfaceRenderer(renderer);
    }

1 ответ

Ну, я думаю, вы неправильно понимаете разницу между фрагментом и активностью, это сообщение об ошибке:

не удается найти метод символа addContentView()

указывает на то, что этот метод не существует!

Это очень простой пример того, как загрузить карту Rajawali3D во фрагмент Android.

введите описание изображения здесь

Создайте Activity, добавив транзакцию Fragment, фрагмент загрузится в map_fragment контейнер, определенный в act_frag_map расположение:

public class Map3DFragActivity extends AppCompatActivity {

    public RajawaliSurfaceView rajawaliTexture;
    Renderer renderer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.act_frag_map);

        setFragment();

    }

    protected void setFragment() {
        FragmentManager fragmentManager = getSupportFragmentManager();
        Fragment mapFragment = new FragmentMap();
        FragmentTransaction ft =
                fragmentManager.beginTransaction();
        ft.add(R.id.map_fragment, mapFragment).commit();
    }

}

Это макет, содержащий фрагмент, добавляющий в свойство android:name название нашего фрагмента класса:

act_frag_map

<RelativeLayout 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=".FragmentExampleActivity" >

    <fragment
        android:id="@+id/map_fragment"
        android:name="com.test.FragmentMap"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
         />
</RelativeLayout>

Это фрагмент, который создает карту!

FragmentMap

import org.rajawali3d.surface.RajawaliSurfaceView;

public class FragmentMap extends Fragment {

    public RajawaliSurfaceView rajawaliTexture;
    Renderer renderer;


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.activity_frag_map,
                container, false);

        rajawaliTexture = (RajawaliSurfaceView) view.findViewById(R.id.rajawali_surface);
        renderer = new Renderer(getActivity());
        rajawaliTexture.setSurfaceRenderer(renderer);

        return view;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); // make sure this line exists

    }
}

activity_frag_map

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:surfaceview="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <org.rajawali3d.surface.RajawaliSurfaceView
        android:id="@+id/rajawali_surface"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        surfaceview:frameRate="60.0"
        surfaceview:renderMode="RENDER_WHEN_DIRTY"/>

</FrameLayout>
Другие вопросы по тегам