On 01/07/2017 10:39 AM, leledumbo wrote:
The first issue I ran into is this:
procedure Cppp1Activity.onResume;
begin
inherited onResume;
with AAAlertDialog.InnerBuilder(self) do begin
setTitle(R.strings.app_name);
end;
end;
I don't check by running the code directly, but looking at the source code:
AAAlertDialog = class external 'android.app' name 'AlertDialog' (AADialog,
ACDialogInterface)
public
type
InnerBuilder = class;
Arr1InnerBuilder = array of InnerBuilder;
Arr2InnerBuilder = array of Arr1InnerBuilder;
Arr3InnerBuilder = array of Arr2InnerBuilder;
InnerBuilder = class external 'android.app' name 'Builder' (JLObject)
InnerBuilder doesn't look like anything callable.
Reading the offical reference
(https://developer.android.com/guide/topics/ui/dialogs.html#AlertDialog), I
guess you need to instantiate it first and only then call its methods:
var
Builder: AAAlertDialog.InnerBuilder;
Dialog: AAAlertDialog;
...
Builder := AAAlertDialog.InnerBuilder.Create(Self); // inside any
Cppp1Activity method so Self refers to Cppp1Activity instance
Dialog := Builder.setTitle(R.strings.app_name).create_; // note the '_'
Thanks! Yes, you're right. I'm having a hard time understanding how the FPC
semantics fit the Java semantics. This is complicated because I'm trying to
learn Android, and to some extent, by extension, I'm getting forced into
Java too. So I'm real unclear about what all the Java examples I'm seeing
are actually doing. Been working with "object pascal" since Delphi 1/2. :-)
So the take away I see here is that I have to remember to use
class.create(...) to create objects from any Java class, not just FPC ones.
So that leaves me with the question: What about destructors? Must I call
free/destroy on all objects I create, or do they self-destruct? If so
destroy or free? From what I've seen of Java everything self destructs,
probably when a usage count hits 0. But I don't know. Perhaps calling
"destroy" is needed to release my claim on it? I was going to try calling
it and see if it blows. :-D
Yes, I figured out "create_" just as I figured out "InnerBuilder", instead
of "Builder". Not sure why that name was changed. I've learned I need to
cross reference the Android docs back to androidr14.inc & pas.
When attempting to compile this it tells me that "float" is undefined. I
think I'm missing something here. "float" is the native Java name for
their
base floating point type and its a valid type for FPC. If I use "single"
instead it will compile. Seems odd.
Pascal's Single maps to Java's float. There's another float type defined in
Math unit but that's created for the routines inside the unit. Java's
primitive type is not available in FPC JVM, use Pascal's type after mapping
from Java. The class version (which should automatically (un)box) is
available, though. So if you insist, simply use JLFloat.
Yes, thank you. Tomas set me straight on this.
--
Jon Foster
JF Possibilities, Inc.
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal