2016-11-10 4 views
1

モバイルアプリのファイルをアップロードするメソッドを含むcodenameoneクラスがあります。ユーザーがそのアップロードボタンをクリックしているときに、javascript関数からそのcodenameoneクラスメソッドを呼び出したいとします。javascriptからcodenameone javaクラスメソッドを呼び出す方法は?

以下は、ファイルをアップロードする私のcodenameoneクラスメソッドです。

public void actionPerformed1(){ 
    if (FileChooser.isAvailable()) { 
     FileChooser.showOpenDialog("image/*", e2-> { 
      String file=null; 
      if(e2!=null){ 
       file = (String)e2.getSource(); 
      } 
      if (file == null) { 
       hi.revalidate(); 
      } else { 
       String extension = null; 
       if (file.lastIndexOf(".") > 0) { 
        extension = file.substring(file.lastIndexOf(".")+1); 
       } 
       if ("txt".equals(extension)) { 
        FileSystemStorage fs = FileSystemStorage.getInstance(); 
        try { 
         InputStream fis = fs.openInputStream(file); 
         hi.addComponent(new SpanLabel(Util.readToString(fis))); 
        } catch (Exception ex) { 
         Log.e(ex); 
        } 
       } else { 
        hi.add("Selected file "+file); 
       } 
      } 
      hi.revalidate(); 
     }); 
    } 

以下は私のHTMLファイルで、私はcodenameone actionPerformed1()メソッドを呼び出すjavascriptを使用します。

<pre> 
    type="button" value="call method"  
    onClick = "document.FileChooserDemo.actionPerformed1()" 
</pre> 

codenameoneメソッドを呼び出すにはどうすればよいですか?

ありがとうございます。

+0

@Quentin【コードネームワン](https://www.codenameone.com/)は、Javaアプレットではありません。あなたは埋め込まれたモバイルアプリですコードを逆さまに読んでいる... –

答えて

1

JavaDocs for the javascript package「JavaメソッドをJavascriptから呼び出す」のセクションを参照してください。

JSObject logger = (JSObject)ctx.get("{}"); 
logger.set("log", new JSFunction(){ 

    public void apply(JSObject self, Object[] args) { 
     String msg = (String)args[0]; 
     Log.p("[Javascript Logger] "+msg); 
    } 

}); 

ctx.set("window.logger", logger); 

そして、JavaScriptからこれが動作します。

logger.log('This is a test message'); 
関連する問題