真机测试device.showAlert不弹出提示框

local layer = display.newLayer()
layer:setKeypadEnabled(true)
layer:addNodeEventListener(cc.KEYPAD_EVENT, function(event)
self.tfUsername:setText(event.key)
– 返回按键
if event.key == “back” then
device.showAlert(“Confirm Exit”, “Are you sure exit game ?”, {“YES”, “NO”}, function(event)
if event.buttonIndex == 1 then
app:exit()
else
self.tfUsername:setText(“不退出啊”)
end
end)
end
– 菜单键
if event.key == “menu” then

    end
end)
self:addChild(layer)

真机测试不弹出提示框 什么原因???求指点~~~

player 能正常弹出

player正常 ,真机弹不出来?

要确定2点

1.KEYPAD_EVENT 是否正常触发
2.KEYPAD_EVENT正常情况下,device.showAlert被调用了吗?

把你的logcat 贴出来看一下

1.KEYPAD_EVENT 可以正常触发

logcat 输出日志。。。。。。。。。。

弹出框代码和logcat日志

临时解决方案:
参考samples/ luajavabridge 中的 例子,实现一个 java的,
然后通过 lua来调用。

这个应该算是个小BUG,因为在org/cocos2dx/utils/PSNative.java中成员变量mContext没有赋值,一直为null。
解决办法很简单,在你的主Activity中加上如下一句代码即可。

PSNative.init(this);

我参考samples/ luajavabridge 中的 例子,实现了一个 java的弹出提示框,但是这个提示框只有一个按钮,我想要增加一个按钮应该怎么修改代码。我已经找到了Luajavabridge.java,内容如下:

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;

public class Luajavabridge extends Cocos2dxActivity {
    static private Luajavabridge s_instance;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        s_instance = this;
    }

    static {
        System.loadLibrary("game");
    }

    static public void showAlertDialog(final String title,
            final String message, final int luaCallbackFunction) {
        s_instance.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                AlertDialog alertDialog = new AlertDialog.Builder(s_instance).create();
                alertDialog.setTitle(title);
                alertDialog.setMessage(message);
                alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        s_instance.runOnGLThread(new Runnable() {
                            @Override
                            public void run() {
                                Cocos2dxLuaJavaBridge.callLuaFunctionWithString(luaCallbackFunction, "OK");
                                Cocos2dxLuaJavaBridge.releaseLuaFunction(luaCallbackFunction);
                            }
                        });
                    }
                });
                alertDialog.setIcon(R.drawable.icon);
                alertDialog.show();
            }
        });
    }
}

```

找到方法了,添加第二个按钮的方法是“setButton2”。。。。。

package org.cocos2d_x.samples.luajavabridge;


import org.cocos2dx.lib.Cocos2dxActivity;
import org.cocos2dx.lib.Cocos2dxLuaJavaBridge;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;

public class Luajavabridge extends Cocos2dxActivity {
    static private Luajavabridge s_instance;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        s_instance = this;
    }

    static {
        System.loadLibrary("game");
    }

    static public void showAlertDialog(final String title,
            final String message, final int luaCallbackFunction) {
        s_instance.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                AlertDialog alertDialog = new AlertDialog.Builder(s_instance).create();
                alertDialog.setTitle(title);
                alertDialog.setMessage(message);
                alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        s_instance.runOnGLThread(new Runnable() {
                            @Override
                            public void run() {
                                Cocos2dxLuaJavaBridge.callLuaFunctionWithString(luaCallbackFunction, "OK");
                                Cocos2dxLuaJavaBridge.releaseLuaFunction(luaCallbackFunction);
                            }
                        });
                    }
                });
                alertDialog.setButton2("CANCEL", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        s_instance.runOnGLThread(new Runnable() {
                            @Override
                            public void run() {
                                Cocos2dxLuaJavaBridge.callLuaFunctionWithString(luaCallbackFunction, "CANCEL");
                                Cocos2dxLuaJavaBridge.releaseLuaFunction(luaCallbackFunction);
                            }
                        });
                    }
                });
                alertDialog.setIcon(R.drawable.icon);
                alertDialog.show();
            }
        });
    }
}


```


LUA调用代码如下:
            local javaClassName = "org/cocos2d_x/samples/luajavabridge/Luajavabridge"
            local javaMethodName = "showAlertDialog"
            local javaParams = {
                "注意",
                "是否保存当前文件?,
                function(event)
                    if event == "OK" then
                       
                     elseif event=="CANCEL" then

                    end
                end
            }
            local javaMethodSig = "(Ljava/lang/String;Ljava/lang/String;I)V"
            luaj.callStaticMethod(javaClassName, javaMethodName, javaParams, javaMethodSig)

```

这个帖子战线拉的好长