在核心游戏LibGDX上单击按钮时调用Activity

时间:2015-05-11 17:13:52

标签: android button android-activity interface libgdx

我在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);
    }

}

请帮助我,非常感谢你。

1 个答案:

答案 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;
                }
            });

如果你只是通过接口名称来调用它,那就不行了。