问题:
今天在接入爱贝支付平台的时候,出现一个错误:
01-28 18:00:05.614: E/AndroidRuntime(25801): FATAL EXCEPTION: GLThread 5466
01-28 18:00:05.614: E/AndroidRuntime(25801): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
01-28 18:00:05.614: E/AndroidRuntime(25801): at android.os.Handler.<init>(Handler.java:121)
01-28 18:00:05.614: E/AndroidRuntime(25801): at android.app.Dialog.<init>(Dialog.java:142)
01-28 18:00:05.614: E/AndroidRuntime(25801): at android.app.AlertDialog.<init>(AlertDialog.java:114)
01-28 18:00:05.614: E/AndroidRuntime(25801): at android.app.AlertDialog.<init>(AlertDialog.java:110)
01-28 18:00:05.614: E/AndroidRuntime(25801): at android.app.ProgressDialog.<init>(ProgressDialog.java:96)
01-28 18:00:05.614: E/AndroidRuntime(25801): at com.iapppay.ui.widget.IPayLoadingDialog.<init>(Unknown Source)
01-28 18:00:05.614: E/AndroidRuntime(25801): at com.iapppay.sdk.main.SDKMain.showPrograssBar(Unknown Source)
01-28 18:00:05.614: E/AndroidRuntime(25801): at com.iapppay.sdk.main.SDKMain.begSession(Unknown Source)
01-28 18:00:05.614: E/AndroidRuntime(25801): at com.iapppay.sdk.main.SDKMain.onPreCallPayHub(Unknown Source)
01-28 18:00:05.614: E/AndroidRuntime(25801): at com.iapppay.sdk.main.IAppPay.startPay(Unknown Source)
01-28 18:00:05.614: E/AndroidRuntime(25801): at com.zssbd.zjd.IZhiAppPay.startPayhub(IZhiAppPay.java:39)
01-28 18:00:05.614: E/AndroidRuntime(25801): at org.cocos2dx.lib.Cocos2dxRenderer.nativeRender(Native Method)
01-28 18:00:05.614: E/AndroidRuntime(25801): at org.cocos2dx.lib.Cocos2dxRenderer.onDrawFrame(Cocos2dxRenderer.java:94)
01-28 18:00:05.614: E/AndroidRuntime(25801): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1516)
01-28 18:00:05.614: E/AndroidRuntime(25801): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)
01-28 18:00:05.614: E/AndroidRuntime(25801): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
01-28 18:00:05.614: E/AndroidRuntime(25801): at android.os.Handler.<init>(Handler.java:121)
01-28 18:00:05.614: E/AndroidRuntime(25801): at android.app.Dialog.<init>(Dialog.java:142)
01-28 18:00:05.614: E/AndroidRuntime(25801): at android.app.AlertDialog.<init>(AlertDialog.java:114)
01-28 18:00:05.614: E/AndroidRuntime(25801): at android.app.AlertDialog.<init>(AlertDialog.java:110)
01-28 18:00:05.614: E/AndroidRuntime(25801): at android.app.ProgressDialog.<init>(ProgressDialog.java:96)
01-28 18:00:05.614: E/AndroidRuntime(25801): at com.iapppay.ui.widget.IPayLoadingDialog.<init>(Unknown Source)
01-28 18:00:05.614: E/AndroidRuntime(25801): at com.iapppay.sdk.main.SDKMain.showPrograssBar(Unknown Source)
01-28 18:00:05.614: E/AndroidRuntime(25801): at com.iapppay.sdk.main.SDKMain.begSession(Unknown Source)
01-28 18:00:05.614: E/AndroidRuntime(25801): at com.iapppay.sdk.main.SDKMain.onPreCallPayHub(Unknown Source)
01-28 18:00:05.614: E/AndroidRuntime(25801): at com.iapppay.sdk.main.IAppPay.startPay(Unknown Source)
01-28 18:00:05.614: E/AndroidRuntime(25801): at com.zssbd.zjd.IZhiAppPay.startPayhub(IZhiAppPay.java:39)
01-28 18:00:05.614: E/AndroidRuntime(25801): at org.cocos2dx.lib.Cocos2dxRenderer.nativeRender(Native Method)
01-28 18:00:05.614: E/AndroidRuntime(25801): at org.cocos2dx.lib.Cocos2dxRenderer.onDrawFrame(Cocos2dxRenderer.java:94)
01-28 18:00:05.614: E/AndroidRuntime(25801): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1516)
01-28 18:00:05.614: E/AndroidRuntime(25801): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)
解决:
这是因为在cocos2dx opengl线程中调用android UI主线程的东西,解决方法:
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
}
});
@Override
public void run() {
}
});