0

こんにちは私はディレクトリが空かどうかを確認するために電話ギャッププラグインを開発しました。

私は以下のコードを使用します

        public PluginResult execute(String arg0, final JSONArray arg1, String arg2) {

        if ( arg0.equals(SHOW6) )
        {

            PluginResult result = null;

                    File file = new File("/mnt/sdcard/koinoxrista/todesktop/");

                    if(file.isDirectory()){

                        if(file.list().length>0){

                        /*  Builder dialog = new AlertDialog.Builder(ctx);
                            dialog.setNegativeButton("Ok", null);
                            AlertDialog alert = dialog.create();
                            alert.setTitle("Failure");
                            alert.setMessage("Directory is not empty!");
                            alert.show();
                        */
                            return new PluginResult(Status.ERROR, "Directory is not empty!");
                        //  System.out.println("Directory is not empty!");

                        }else{

                        /*                      
                            Builder dialog = new AlertDialog.Builder(ctx);
                            dialog.setNegativeButton("Ok", null);
                            AlertDialog alert = dialog.create();
                            alert.setTitle("Failure");
                            alert.setMessage("Directory is empty!");
                            alert.show();
                        */       
                            return new PluginResult(Status.OK, "Directory is empty!");
                    //      System.out.println("Directory is empty!");

                        }

                    }else{

                //      System.out.println("This is not a directory");

                    }

        }

そしてこれは私がjsからそれを呼ぶ方法です

var msgbox = function() {
};

msgbox.prototype.show6 = function(success, fail) {
    return PhoneGap.exec(success, fail, "msgbox", "show6", []);
    };  

function success(e){globalcreate = 0; alert(e);}
function fail(r){globalcreate = 1; alert(r);}

msgbox = new msgbox();

ディレクトリが空かどうかを警告したい。

コールバックを設定する方法は?

.javaのアラートダイアログのコメントを解除すると、正しい結果が得られます。

4

1 に答える 1

0

スコーピングの問題のようです。成功と失敗の方法をグローバルとして宣言することは悪い考えです。あなたはこのようなことをしたいです:

var msgbox = function() { 
};

msgbox.prototype.show6 = function(success, fail) {
    return PhoneGap.exec(success, fail, "msgbox", "show6", []);
};  

function showSuccess(e){globalcreate = 0; alert(e);}
function showFail(r){globalcreate = 1; alert(r);}

msgbox = new msgbox();

そしてそれを次のように呼びます:

msgbox.show6(showSuccess, showFail);

または、次のようにメソッドでプルできるのと同じことを常に実行したい場合もあります。

msgbox.prototype.show6 = function() {
    var win = function(e){globalcreate = 0; alert(e);}
    var fail = function(r){globalcreate = 1; alert(r);}
    return PhoneGap.exec(win, fail, "msgbox", "show6", []);
};  

そしてそれを次のように呼びます:

msgbox.show6();

コメントアウトしたJavaコードは、問題が発生する場合は、常にUIスレッドで実行する必要があります。

于 2012-09-30T18:53:12.677 に答える