我正在尝试使用一些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);
我没有在上面做这两个步骤。我应该把它们放吗?如果是,在哪里?
编辑
[好,首先感谢您的详细回答。我了解代码的第一个标准(类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方法。
很抱歉,我的信息可能不清楚,但我有点绝望。
谢谢您能答复。
编辑:这不是我第一个问题的答案,但是我不知道如何回答特定的答案,并且同时放置一些代码。