Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Status
titleJAVA

Status
colourYellow
titleC++

public class Database{

public static void AddPairAddName( String key id , String value name );

}

CFxJavaString key( L"Id0" );
CFxJavaString value( L"2022John Doe" );

CFxStaticInvocation invocation( “com/domain/Database“ , “AddPair” “AddName” , “(Ljava/lang/String;Ljava/lang/String;)V” );

invocation.Call( true, key.GetJString() , value.GetJString() );

public class Database{

public static void SetNames( String[] names );

}

jclass stringClass = GET_JAVA()->FindClass( "java/lang/String" );
CFxJavaObjectArray names( length, stringClass );

CFxJavaString name( “Name“ “John Doe“ );
names.SetElement( 0, name.GetStrongJString() );

CFxStaticInvocation invocation( “com/domain/Database“ , “SetNames” , “(Ljava/lang/String;)V” );

invocation.Call( true, names.GetJObject() );

...

Status
titleJAVA

Status
colourYellow
titleC++

public class Database{
public static native String GetName( int id );

}

String name = Database.GetName(0);

JNIEXPORT jstring JNICALL Java_com_domain_Database_GetName(1);( JNIEnv * env, jclass clazz, jint id )
{

CFxJavaString name( L"John Doe" );
return name.GetStrongJString();
}

public class Database{
public static native String[] GetPairGetNames( int id );

}

String[] pair names = Database.GetPair(1);GetNames();

JNIEXPORT jobjectarray JNICALL Java_com_domain_Database_GetNames( JNIEnv * env, jclass clazz )
{
jclass stringClass = GET_JAVA()->FindClass( "java/lang/String" );
CFxJavaObjectArray names( layouts.size(), stringClass );

CFxJavaString name( “John Doe“ );
names.SetElement( 0, name.GetStrongJString() );

return reinterpret_cast<jobjectArray >( names.GetStrongJObject() );
}

Note: If an object is passed as return value back to Java, it is always necessary to use methods like GetStringJStringGetStrongJString() or GetStringJObjectGetStrongJObject() else there might runtime errors occur. These methods warrant the life time of an object even when the C++ method is being taken from call stack. For further samples look for any use of CFxStaticInvocation and CFxObjectInvocation in the SDK Android projects.