次に示す例は、1 個の文字列引数を取り、その中の文字を逆に並べた新しい文字列を返す関数です。
call()
関数では、関数呼び出しが行われたコンテキストから ID 文字列を取得するために
ctx
パラメーターが使用されています。
package com.example;
import com.adobe.fre.FREContext;
import com.adobe.fre.FREFunction;
import com.adobe.fre.FREInvalidObjectException;
import com.adobe.fre.FREObject;
import com.adobe.fre.FRETypeMismatchException;
import com.adobe.fre.FREWrongThreadException;
import android.util.Log;
public class ReverseStringFunction implements FREFunction {
public static final String NAME = "reverseString";
private String tag;
public FREObject call(FREContext arg0, FREObject[] arg1) {
DataExchangeContext ctx = (DataExchangeContext) arg0;
tag = ctx.getIdentifier() + "." + NAME;
Log.i( tag, "Invoked " + NAME );
FREObject returnValue = null;
try {
String value = arg1[0].getAsString();
value = reverse( value );
returnValue = FREObject.newObject( value );//Invert the received value
} catch (IllegalStateException e) {
Log.d(tag, e.getMessage());
e.printStackTrace();
} catch (FRETypeMismatchException e) {
Log.d(tag, e.getMessage());
e.printStackTrace();
} catch (FREInvalidObjectException e) {
Log.d(tag, e.getMessage());
e.printStackTrace();
} catch (FREWrongThreadException e) {
Log.d(tag, e.getMessage());
e.printStackTrace();
}
return returnValue;
}
private String reverse( String source ) {
int i, len = source.length();
StringBuffer dest = new StringBuffer(len);
for (i = (len - 1); i >= 0; i--)
dest.append(source.charAt(i));
return dest.toString();
}
}