Intereting Posts
Как удалить анимацию значков для отображения нижней навигации в android Что такое запускMode «Несколько»? Проблемы с анимацией продолжительности анимации Что происходит быстрее при чтении больших объемов данных: XML или SQLite Передача последовательного устройства Bluetooth для Android / Xamarin с пустым выходным потоком Как libgdx обнаруживает присутствие клавиатуры Ionic 2 dev и переменные среды prod Установите Live Wallpaper Programmatically на корневое устройство Android Методы getTop (), getLeft (), getX (), getY (), getWidth (), getHeight () Редактирование функциональности эмуляции гостевой карты в Android Я пытаюсь показать тост, когда эта кнопка нажата. Но код не работает Как я могу панорамировать веб-просмотр в google glass Кэширование Android SDK в Travis CI Как исправить исключение разрешения INJECT_EVENT при отправке прикосновений к тесту ActivityInstrumentationTestCase2 Установите прозрачный фон изображения на Android

Передать ArrayList из модуля android в ядро ​​в libgdx

Я использую libgdx. Мне нужно передать ArrayList из TaskSet из андроида в ядро. Проблема заключается в том, что TaskSet находится в модуле android. Я могу передать некоторые стандартные объекты, такие как Strings, таким образом:

public class DragAndDropTest extends ApplicationAdapter { ...... public DragAndDropTest(String value){ this.value=value; } ...... } 

В AndroidLauncher:

 AndroidApplicationConfiguration config = new AndroidApplicationConfiguration(); LinearLayout lg=(LinearLayout) findViewById(R.id.game); lg.addView(initializeForView(new DragAndDropTest("Some String"), config)); 

Он работает нормально, но мне нужно передать ArrayList из TaskSet, TaskSet находится в модуле android

Я знаю, что плохое решение – разместить TaskSet в «основном» модуле, но в любом случае мне нужны некоторые методы для перехвата части Android-взрывателя

Если вы сделаете это так, как вы просите, вы не сможете поддерживать многоплатформенные функции. Это также означает, что вы не сможете тестировать на рабочем столе. Это потребует много времени для компиляции и загрузки Android APK на устройства.

Но вы должны это сделать, разрезав и вставив все данные из блока android в core блок в файле build.gradle вашего проекта. Это будет выглядеть так:

 project(":core") { apply plugin: "java" apply plugin: "android" configurations { natives } dependencies { compile "com.badlogicgames.gdx:gdx:$gdxVersion" compile "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion" natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86" natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi" natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a" } } 

Но, как я уже сказал, это, вероятно, не то, что вы хотите сделать. Я предлагаю использовать интерфейс таким образом, чтобы весь ваш код, который обрабатывает TaskSets, остается в модуле Android. Что-то вроде этого:

 public interface PlatformResolver { public void handleTasks(); } 

 public class MyGame extends ApplicationAdapter { //...... PlatformResolver platformResolver; public MyGame (PlatformResolver platformResolver){ this.platformResolver = platformResolver; } //..... public void render(){ //... if (shouldHandleTasks) platformResolver.handleTasks(); //... } 

 public class AndroidLauncher extends AndroidApplication implements PlatformResolver { public void handleTasks(){ //Do stuff with TaskSets } @Override protected void onCreate (Bundle savedInstanceState) { super.onCreate(savedInstanceState); someDataType SomeData; AndroidApplicationConfiguration config = new AndroidApplicationConfiguration(); // config stuff initialize(new MyGame(this), config); } } 

 public class DesktopLauncher implements PlatformResolver{ public void handleTasks(){ Gdx.app.log("Desktop", "Would handle tasks now."); } public static void main (String[] arg) { LwjglApplicationConfiguration config = new LwjglApplicationConfiguration(); config.title = "My GDX Game"; config.width = 480; config.height = 800; new LwjglApplication(new MyGame(this), config); } }