Intereting Posts
Как адекватно заменить Sensor.TYPE_ORIENTATION (который теперь устарел)? Как закодировать записанный голос для ogg vorbis? «Запуск эмулятора для AVD», затем Panic: не удалось открыть … » Несколько сканирований / намерений, доставляемых на получение активности Как зарегистрировать мое приложение для Android, чтобы открыть собственное расширение файла, а не для всех файлов Что произойдет, когда мое приложение будет удалено (убито) из списка последних приложений? Активность запуска Android от службы Как настроить пользовательское хранилище ключей для отладки в eclipse для Android Android: как изменить изображение низкого качества на высокое качество, когда анимация останавливается в галерее? «Конверсия в формат Dalvik завершилась с ошибкой 1» после обновления до ADT 14 Дизайн материалов: как получить текст кнопки, чтобы быть обычным делом (не CAPITAL)? Что произойдет с не обновленными приложениями, которые выполняют код, который требует разрешения, которое пользователь разрешил в Android 6.0 Marshmallow Как изменить макет (без кодирования) в Android Studio Проблема с звуками уведомления Как зарегистрировать пользователей с учетной записью Google в приложении для 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); } }