繁体   English   中英

从libgdx项目加载活动

[英]Load an activity from libgdx project

我正在尝试使用一些Android小部件,例如用于列出玩家得分的滚动列表框。 我有我的基本Libgdx项目,所以Activity没有课程启发。 我正在尝试合并一个扩展Activity的类。 问题(也是一个优点)是libgdx并非特定于Android。 因此,我必须创建一个接口来处理Android部分,桌面部分,iOS部分等。此页面上对此进行了描述: http : //code.google.com/p/libgdx/wiki/ApplicationPlatformSpecific我做到了,它在“正常工作“,我所说的工作是指该程序从我的界面中获得正确的提示。 这个Android类扩展了Activity。 我已经实现了onCreate()函数,但是它不起作用,我在此onCreate()方法中放置了一些断点,但是有忽略的地方,所以我想函数中没有进行操作。 我读到我必须打电话给:

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

我没有在上面做这两个lignes。 我应该把它们放吗? 如果是这样,在哪里?

编辑

好的,首先感谢您的详细回答。 我了解代码的第一个标准(类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()对象时,它将传递接口。 这样,我可以为每种支持调用适当的接口。 但是,当项目的核心要调用我的界面时,我不知道如何返回主活动,“ MainActivity扩展了AndroidApplication”。 我不知道它是如何工作的。 例如,如果我确实喜欢您说的话,并将“ this”传递给我的ARank()对象(ARank(this))。 然后,当我想回到主要的libgdx活动时,我不知道该怎么做。 我是一个初学者,所以我不知道如何运作

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

我知道变量“ i”应代表此类:

class MainActivity extends AndroidApplication

但是如果我叫statrtActivity(主要活动); 我不希望该函数调用onCreate方法。

很抱歉,我的信息可能不清楚,但我有点绝望。

谢谢您的答复。

如果不正确,您要尝试打开LibGDX中的另一个活动。

我已经按照您刚才的描述做了。 我创建了一个在每个项目上执行不同操作的界面。

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

在您的android接口类中,您需要引用主类。 另外,您还需要一个函数,通过与MainActivity对话来切换到其他活动。

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。 因此,假设您的其他活动称为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,它将通过调用Main Activity并获取其上下文来启动另一个活动。

因此,您可以看到我做了所有工作,因为我需要Main Activity的applicationContext才能启动另一个Activity。

必须有一种更优雅,更正确的方法来做到这一点。 我非常确定在AndroidInterface中保留对MainActivity的引用不是一个好主意,但是,如果您正在寻找这,这会让我快速摆脱困境。 您可以从中进行工作。

无论哪种方式,我都希望能有所帮助。 =)

好的,首先感谢您的详细回答。 我了解代码的第一个标准(类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()对象时,它将传递接口。 这样,我可以为每种支持调用适当的接口。 但是,当项目的核心要调用我的界面时,我不知道如何返回主活动,“ MainActivity扩展了AndroidApplication”。 我不知道它是如何工作的。 例如,如果我确实喜欢您说的话,并将“ this”传递给我的ARank()对象(ARank(this))。 然后,当我想回到主要的libgdx活动时,我不知道该怎么做。 我是一个初学者,所以我不知道如何运作

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

我知道变量“ i”应代表此类:

class MainActivity extends AndroidApplication

但是如果我叫statrtActivity(主要活动); 我不希望该函数调用onCreate方法。

很抱歉,我的信息可能不清楚,但我有点绝望。

谢谢您的答复。

编辑:这不是我的第一个问题,但我不知道如何回答特定的答案,同时放一些代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM