cocos2d-x-3.3Android工程接入sdk时遇到的问题

新做的cocos2d-x-3.3版本的Android工程,接入付费sdk时,想让游戏开始的时候执行sdk的初始化,可惜打开主AppActivity.java,  没有提供一个方法。

解决办法:

  可以重写父类Cocos2dxActivity的init()方法;如:

  public void init(){

    super.init();

    //在这里写游戏开始的时候要执行的方法

  }

接下来想在支付的时候在静态方法中调用的Toast,报错。。。

解决办法:

  在主Activity的init()方法中初始化一个Handler对象,如:

public static android.os.Handler dialogHandler = null;

    public static AppActivity activity;

    public void Init() {
        super.init();
        dialogHandler = new android.os.Handler();
        activity = this;
    }

    public static void showToastDialog(final String text) {
        dialogHandler.post(new Runnable() {
            public void run() {
                Toast.makeText(activity, text, Toast.LENGTH_SHORT).show();

            }
        });
    }

然后在别的地方调用AppActivity.showToastDialog("Toast显示");问题解决。

接下来又遇到一个问题:当付费成功后,调用static方法给游戏返回支付结果时,出现卡死的状态。。。

解决办法:

public static void PayFinish() {
        Cocos2dxGLSurfaceView.getInstance().queueEvent(new Runnable() {
            public void run() {
                // 这里调用传入游戏支付结果的static方法
            }
        });

    }
public Class Fruit extends Cocos2dxActivity{
        public static Fruit context;
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            context = this;
        }
        
        public static Fruit getContext() {
            return Fruit.context;
        }
    }

Fruit类大体就是这样

接下来调用(建议使用下面的方法):

// Fruit为当前主Activity
        public static void pay() {
            Fruit.getContext().runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    // 在这里写支付调用sdk的接口
                }
            });
        }
原文地址:https://www.cnblogs.com/Colored-Mr/p/4256757.html