我在Core游戏上有一个按钮。我想当我点击按钮时,活动就会运行。我想我可以使用Interface但它不起作用。
buttonPost.addListener(new ClickListener(){
@Override
public void clicked(InputEvent event, float x, float y) {
myGameCallback.startActivity();
}
});
这是我的界面
public interface MyGameCallback{
public void startActivity();
}
private MyGameCallback myGameCallback;
public void setMyGameCallback(MyGameCallback callback){
myGameCallback=callback;
}
和android代码:
public class MainActivity extends AndroidApplication implements Main.MyGameCallback {
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
Main main=new Main();
main.setMyGameCallback(this);
initialize(main, config);
}
@Override
public void startActivity() {
Intent intent = new Intent(this, Post.class);
startActivity(intent);
}
}
请帮助我,非常感谢你。
答案 0 :(得分:3)
在LIBGDX中实现一些本机android功能的接口方式如下 首先为什么你的Main类实现屏幕?据我所知,Main Class应该实现Game。屏幕与主类不同。 所以在这里你去接口。
public interface MyGameCallback{
public void startActivity();
}
在AndroidLauncher上
public class AndroidLauncher extends AndroidApplication implements
MyGameCallback{
// provide implementation of startActivity(); method.
}
最后你的主要Game类应该像
public class MainGame extends Game {
public MyGameCallback myGameCallback;
public MainGame(MyGameCallback myGameCallback) {
super();
this.myGameCallback = myGameCallback; // initialize in constructor
}
最后,在游戏中你要开始活动的按钮上,就像它一样。
public class MainMenuScreen implements Screen {
private MainGame mygame;
public MainmenuScreen(MainGame game) { // initiaize maingame class so that you can call Interface method by its reference
this.mygame = game;
}
///////////////////////////////////
最后在你的按钮上调用方法
buttonPost=new TextButton("Post",skin);
buttonPost.pad(20);
buttonPost.addListener(new EventListener() {
@Override
public boolean handle(Event event) {
mygame.myGameCallback.startActivity();
return true;
}
});
如果你只是通过接口名称来调用它,那就不行了。