Android-Libgdx, вызов другой активности после запуска игры на кнопке

Я столкнулся с серьезной проблемой, когда мне нужно вызвать другое действие, когда кнопка нажата после запуска игры. Игра вызывается методом initiate (game,) из интерфейса AndroidApplication.

В обычной деятельности я могу легко вызвать другое действие, но, похоже, сложно вызвать другое действие из класса Libgdx, которое реализует AndroidApplication.

Может ли кто-нибудь предложить правильный метод для вызова Activity из класса Libgdx, который реализует интерфейс AndroidApplication?

Я пытался сделать это в течение недели, но кажется, что мой метод абсолютно не прав.

Заранее спасибо.

Solutions Collecting From Web of "Android-Libgdx, вызов другой активности после запуска игры на кнопке"

Определите интерфейс обратного вызова в вашем классе LibGdx и используйте его, чтобы уведомить AndroidLauncher о начале нового действия.

Например, в вашем игровом классе LibGdx:

// Your Game class in the core package public class MyGame extends Game { // Define an interface for your various callbacks to the android launcher public interface MyGameCallback { public void onStartActivityA(); public void onStartActivityB(); public void onStartSomeActivity(int someParameter, String someOtherParameter); } // Local variable to hold the callback implementation private MyGameCallback myGameCallback; // ** Additional ** // Setter for the callback public void setMyGameCallback(MyGameCallback callback) { myGameCallback = callback; } @Override public void create () { ... } ... private void someMethod() { ... // check the calling class has actually implemented MyGameCallback if (myGameCallback != null) { // initiate which ever callback method you need. if (someCondition) { myGameCallback.onStartActivityA(); } else if (someOtherCondition) { myGameCallback.onStartActivityB(); } else { myGameCallback.onStartSomeActivity(someInteger, someString); } } else { Log.e("MyGame", "To use this class you must implement MyGameCallback!") } } } 

Затем убедитесь, что ваш AndroidLauncher реализует необходимый интерфейс:

 // Your AndroidLauncher public class AndroidLauncher extends AndroidApplication implements MyGame.MyGameCallback { @Override protected void onCreate (Bundle savedInstanceState) { super.onCreate(savedInstanceState); AndroidApplicationConfiguration config = new AndroidApplicationConfiguration(); // create an instance of MyGame, and set the callback MyGame myGame = new MyGame; // Since AndroidLauncher implements MyGame.MyGameCallback, we can just pass 'this' to the callback setter. myGame.setMyGameCallback(this); initialize(myGame, config); } @Override public void onStartActivityA() { Intent intent = new Intent(this, ActivityA.class); startActivity(intent); } @Override public void onStartActivityB(){ Intent intent = new Intent(this, ActivityB.class); startActivity(intent); } @Override public void onStartSomeActivity(int someParameter, String someOtherParameter){ Intent intent = new Intent(this, ActivityA.class); // do whatever you want with the supplied parameters. if (someParameter == 42) { intent.putExtra(MY_EXTRA, someOtherParameter); } startActivity(intent); } }