java - Android-Libgdx,在游戏开始后点击按钮调用另一个 Activity

标签 java android android-intent android-activity

当我需要在游戏开始后单击按钮时调用另一个 Activity 时,我遇到了一个主要问题。游戏通过 AndroidApplication 接口(interface)的 initiate(game, ) 方法调用。

在正常的 Activity 中,我可以很容易地调用另一个 Activity,但似乎很难从实现了 AndroidApplication 的 Libgdx 类中调用另一个 Activity。

谁能建议一个正确的方法来从实现 AndroidApplication 接口(interface)的 Libgdx 类中调用 Activity?

我尝试这样做了一个星期,但似乎我的方法完全错误..

提前致谢。

最佳答案

在你的 LibGdx 类中定义一个回调接口(interface),并用它来通知你的 AndroidLauncher 开始新的 Activity 。

例如在您的 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 实现了所需的接口(interface):

// 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);
    }

}

关于java - Android-Libgdx,在游戏开始后点击按钮调用另一个 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26069759/

相关文章:

java - 从调用 Activity 中提取 Intent 中的可分割数据需要很长时间

java - 将 Windows 上的 JConsole 与 Linux 上的远程 Java Springboot 应用程序连接时连接失败

java - 在 SharedPreferences 中保存字符串集的最快方法是什么?

java - 未通过广播监听器注册 Intent

android - 从 Android 服务创建 Intent 选择器

java - SQS FIFO 使用 MessageGroupId 接收消息

java - 无法在 Android 中解密加密的短信(在 2.2 操作系统中加密)...(尝试在 2.3 操作系统中解密)

android - 无法让 Eclipse AVD NexusS 4.1 工作 - 说连接你的充电器?

java - pdf 在 pdfview android 中不缩放

java - 从 parse.com 检索字符串并在 Android TextView 中显示它