0

以下は私のコードですが、機能していません。エラー関数は呼び出しのみです

ネイティブプラグイン

package com.gami.fre;

import org.apache.cordova.api.Plugin;
import org.apache.cordova.api.PluginResult;
import org.json.JSONArray;


import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.util.Log;
import android.widget.Toast;


public class ConfirmBox extends Plugin {

    public static final String NATIVE_ACTION_STRING="nativeAction";       
    public static final String SUCCESS_PARAMETER="success"; 
    public Context context;
    public int result=0;

    @Override
    public PluginResult execute(String action, JSONArray data, String callbackId) 
    {

          Log.d("HelloPlugin", "PhoneGap/Cordova!");             
          //only perform the action if it is the one that should be invoked 


          if (NATIVE_ACTION_STRING.equals(action))
          {                   
              String resultType = null;                    

              try {                         
                   resultType = data.getString(0);                   
                  }                    
              catch (Exception ex) {  

                  Log.d("HelloPlugin", ex.toString());          
                  }                    

              if (resultType.equals(SUCCESS_PARAMETER))
                {          
                  Log.d("hisu", resultType);
                  AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                            context);

                        // set title
                        //alertDialogBuilder.setTitle("Your Title");

                        // set dialog message
                        alertDialogBuilder
                            .setMessage("Are you sure want to Exit!")
                            .setCancelable(false)
                            .setPositiveButton("Yes",new DialogInterface.OnClickListener()
                            {
                                public void onClick(DialogInterface dialog,int id) 
                                {
                                    //ConfirmBox.this.finish();
                                }
                              })
                            .setNegativeButton("No",new DialogInterface.OnClickListener() 
                            {
                                public void onClick(DialogInterface dialog,int id) 
                                {

                                    dialog.cancel();
                                }
                            });

                            // create alert dialog
                            AlertDialog alertDialog = alertDialogBuilder.create();
                            // show it
                            alertDialog.show();
 return new PluginResult(PluginResult.Status.OK, result);

                }      
             else 
             {                      
                  return new PluginResult(PluginResult.Status.ERROR, "Oops, Error :(");                 
             }           
        } 

    return null;

    }

}

電話ギャップコール

<script type="text/javascript" >
function callNativePlugin( returnSuccess ) 
{    
 Helo.callNativeFunction( nativePluginResultHandler, nativePluginErrorHandler, returnSuccess ); 

} 

function nativePluginResultHandler (result)
 {    
    //alert("SUCCESS: \r\n"+result ); 

 } 

 function nativePluginErrorHandler (error)
 {    

 alert("ERROR: \r\n"+error );

 } 

エラー関数のみが毎回呼び出されます。成功の呼び出しが行われていますが、最初の行の直後にスキップされました。つまり、ログ出力後、関数からスキップされ、エラーが表示されます: NULL

これを解決するのを手伝ってください

4

3 に答える 3

0

これは今年初めに作成しました。現在の Phonegap で引き続き機能するかどうかはよくわかりません。これは、AlertList を作成してユーザーの選択を返すことができるようにするために作成したプラグインです。

https://github.com/kidino/phonegap-alertdialoglist-plugin

Phonegap の Android AlertList ダイアログの例

一般に、Javascript で行う必要があるのは、配列を作成することです。最初の項目が AlertList のタイトルになります。次に、showlist() 関数を呼び出して、配列をパラメーターとして渡します。リポジトリの www フォルダーにある例を確認してください。

<script>
    var fruitlist = [
                      "The Fruit List Title", // this is the title 
                      "Orange", 
                      "Apple", 
                      "Watermelon", 
                      "Papaya", 
                      "Banana", 
                      "Pear" 
              ];

    function showlist(thelist) {
            cordova.exec(
                    function(listitem) {
                            alert( "You selected "+ thelist[listitem] );
                    }, 
                    function(error) {
                            alert("Error Occured");
                    }, "AlertList", "alertlist", thelist );
    }
</script>

HTML には、次のようなものを含めることができます。

<h1><a href="javascript:showlist(fruitlist)">FRUITS</a></h1>
于 2013-12-18T03:51:09.707 に答える
0

addJavascriptInterface() が JavaScript から Android のネイティブ関数を呼び出すのに役立つことを願っています

元:

ネイティブ コード: webview.addJavascriptInterface(this.Activity,"SomeKey");

Javascript :

ここでは、ネイティブ関数を次のように呼び出すことができます

window.SomeKey.execute() //execute はネイティブ関数です

于 2013-02-15T11:31:03.970 に答える