java - 从 libgdx 项目加载 Activity

标签 java android android-activity libgdx

我正在尝试使用一些 Android 小部件,例如用于列出玩家分数的滚动列表框。 我有我的基本 Libgdx 项目,因此没有 Activity 中的类阻碍。我正在尝试合并一个扩展 Activity 的类。问题(也是一个优点)是 libgdx 不是特定于 Android 的。所以我必须创建一个接口(interface)来处理 Android 部分、桌面部分、iOS 部分等...就像本页所述: http://code.google.com/p/libgdx/wiki/ApplicationPlatformSpecific 我做到了,它是“工作”的,我所说的工作是指程序进入从我的接口(interface)继承的正确类中。这个 Android 类扩展了 Activity。我已经实现了 onCreate() 函数,但它不起作用,我在这个 onCreate() 方法中放置了一些断点,但有忽略,所以我猜函数中不会出现。我读到我必须打电话:

Intent myIntent = new Intent(this, AvitivityName.class);
startActivity(myIntent);

我不会做上面两行的事情。我应该放它们吗?如果是的话,在哪里?

编辑

好的,首先感谢您非常详细的回答。我理解代码的第一部分(AndroidInterface 类)。但我不确定是否理解第二部分。这是构建 libgdx 项目时 android 部分的默认代码:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();

    initialize(new MyMain(), cfg);
}

这是我在此函数中添加的内容:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
    cfg.useGL20 = true;

    IRank rank = new ARank();
    initialize(new MyMain(rank), cfg);
}

因此,当它创建 MyMain() 对象时,它将传递接口(interface)。这样我就可以为每个支持调用适当的接口(interface)。但是,当项目的核心要调用我的界面时,我不知道如何返回主 Activity ,即“MainActivity extends AndroidApplication” Activity 。我不知道它到底是如何运作的。例如,如果我确实像您所说的那样并将“this”传递给我的 ARank() 对象(ARank(this))。然后当我想返回主要的 libgdx Activity 时,我不知道该怎么做。我是初学者,所以我不知道如何运作

Intent i = new Intent(getApplicationContext(), TestActivity.class);
            startActivity(i);

我知道变量“i”应该代表这个类:

class MainActivity extends AndroidApplication

但是如果我调用 statrtActivity(主要 Activity );我不希望这个函数调用 onCreate 方法。

我对我的消息感到抱歉,可能不清楚,但我有点绝望。

如果您能回复,谢谢。

最佳答案

如果我正确的话,您正在尝试做的是从 LibGDX 打开另一个 Activity 。

我之前已经按照您刚才描述的方法完成了该操作。 我创建了一个界面,在每个项目上执行不同的操作。

现在,让我解释一下我不久前匆忙找到的不太优雅的解决方案。

在你的 android 接口(interface)类中,你需要有一个对你的主类的引用。 此外,您还需要一个函数来通过与 MainActivity 对话来切换到其他 Activity。

public class AndroidInterface implements MyInterface{
    private MainActivity _mainActivity;
    ...
    public AndroidInterface (MainActivity activity){
        _mainActivity = activity;
    }
    ...
    public void switchActivity(int activityID) {
        _mainActivity.startMyActivity(activityID);
    }
}

很简单,不是吗?

现在,让我们进入 MainActivity 类。您将初始化并执行 onCreate 方法中的其他操作,但不要忘记使用 MainActivity 作为参数创建一个 AndroidInterface。 因此,假设您的另一个 Activity 称为 TestActivity,如果您的 ActivityID 为 10,它将被调用。

public class MainActivity extends AndroidApplication{
    ...
    public MainActivity (){
        ...
    }
    ...
    public void onCreate(Bundle savedInstanceState) {
        ...
        AndroidInterface androidFunctions = new AndroidInterface((MainActivity)this);
        ...
    }
    ...
    public void startMyActivity(int activityID) {
        switch(activityID){
            case 10:
                Intent i = new Intent(getApplicationContext(), TestActivity.class);
                startActivity(i);
                break;
        }
    }
}

所以最终它看​​起来或多或少都是这样的。您将调用您的 AndroidInterface,它将通过调用您的主 Activity 并在那里获取其上下文来启动另一个 Activity 。

所以你可以看到我做了所有这些工作,因为我需要主 Activity 的 applicationContext 才能启动另一个 Activity 。

必须有一种更优雅、更正确的方法来做到这一点。我非常确定在 AndroidInterface 中保留对 MainActivity 的引用不是一个好主意,但是如果这就是您正在寻找的东西,这可以让我快速摆脱麻烦。你可以以此为基础开展工作。

无论如何,我希望这会有所帮助。 =)

关于java - 从 libgdx 项目加载 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23353064/

相关文章:

java - 关于随机选择算法

java - 如何将删除按钮 (x) 附加到动态创建的 ListView 的每个成员?

Android Camera2 API MediaRecoder 如何捕获图像(不是流也不是文件)

android - 使用 cmake for Android 时将共享对象复制到 jniLibs

Android:在不同的 Activity 中重复使用相同的 View 对象(案例是关于广告横幅)

java - 启动后的 Android Studio 错误

java - 富人脸树问题

java - 如何创建多部分响应

java - 将 retrofit 回调值转换为返回封装对象

java - 如何使用按钮从一个 Activity move 到另一个 Activity ?