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

Reply via email to