Я пытаюсь добавить два приложения AndroidFragmentApplication в одно действие. Но на экране отображается только последний добавленный фрагмент. Другой фрагмент не показывает ничего. Что мне нужно сделать, чтобы нарисовать оба вида?
Сначала я пытался инициализировать представления с помощью класса AndroidApplication. Но это вызвало сбой приложения. Затем я добавил несколько фрагментов, расширяющих приложение AndroidFragmentApplication. Теперь приложение не вылетает, а только последний добавленный фрагмент рисует на экране.
Здесь я добавляю фрагменты-
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff">
<fragment
android:layout_width="80dp"
android:layout_height="100dp"
android:layout_gravity="center"
android:id="@+id/alpha_fragment"
android:name="com.sample.libgdx_final.AlphaFragment" />
<fragment
android:id="@+id/coin_fragment"
android:layout_width="100dp"
android:layout_height="100dp"
android:name="com.sample.libgdx_final.CoinFragment"
/>
</FrameLayout>
Это мой фрагмент и ApplicationListener -
public class CoinFragment extends AndroidFragmentApplication implements AndroidFragmentApplication.Callbacks{
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return initializeForView(new CoinTranslateLibgdx());
}
}
CoinTranslateLibgdx.java
class CoinTranslateLibgdx extends ApplicationAdapter {
private SpriteBatch batch;
private Texture texture;
private Sprite sprite;
private float deltaTime = 0f;
private boolean increasing = true;
@Override
public void create() {
batch = new SpriteBatch();
texture = new Texture(Gdx.files.internal("token.png"));
sprite = new Sprite(texture);
sprite.setCenterX(Gdx.graphics.getWidth() / 2f);
sprite.setCenterY(Gdx.graphics.getHeight());
}
@Override
public void render() {
Gdx.gl20.glClearColor(0, 0, 0, 0);
batch.begin();
if (deltaTime <= 1 && increasing) {
deltaTime += Gdx.graphics.getDeltaTime() * 1f;
} else if (deltaTime >= 0.09) {
increasing = false;
deltaTime -= Gdx.graphics.getDeltaTime() * 1f;
} else {
increasing = true;
}
batch.setColor(1, 1, 1, deltaTime);
batch.draw(sprite, 0, 0);
batch.end();
}
@Override
public void dispose() {
batch.dispose();
texture.dispose();
}
}