Page 2 of 2 FirstFirst 1 2
Results 16 to 21 of 21

Thread: App afsluiten keuze

  1. #16
    Ik zou die toast() functie niet opnemen in je form-declaratie. Is nergens voor nodig omdat die functie niets van het form meer nodig heeft.

    Gewoon de code die ik gaf toevoegen onder implementation. Je zou deze funtie ook in een aparte util-unit kunnen zetten (omdat ie form onafhankelijk is).

    (Wel raar dat jij die foutmelding krijgt want die TToastLength heb je wel gedefinieerd.)

  2. #17
    Ik probeer je code werkend te krijgen.
    Intussen heb ik vermoedelijk 'het' probleem opgelost:

    Code:
    procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
     CanClose:=False; //Form wordt niet afgesloten
    end;
    De App blijft nu actief totdat deze geheel opgestart is.
    Zo werkt mijn code goed (heb nog maar enkele testen gedaan, dus nog even afwachten...)

  3. #18
    Ik ben een stukje verder, maar loop hier vast.
    Ik krijg een fout melding (Undeclared indentifer: 'TJToast') bij:

    ToastLength := TJToast.JavaClass.LENGTH_SHORT

    Waarschijnlijk zit deze bij XE8 in een andere Unit.
    Ik ben aan het zoeken maar heb de oplossing nog niet gevonden.
    Last edited by MMSoft; 06-Nov-16 at 10:10.

  4. #19
    Het kan inderdaad zijn dat JToast niet met headers in XE8 staan. Bij 10.1 Berlin wel. Ik was wel ergens een voorbeeld met complete headers tegen gekomen maar omdat 10.1 ze wel al had, had ik ze weggelaten in mijn voorbeeld. Ik zal straks wel even kijken of ik dat voorbeeld weer terug kan vinden.

    Ok... Het complete voorbeeld staat hier
    http://blong.com/Articles/DelphiXE6A...vityResult.htm

    Ik paste het hier even mocht de pagina in de toekomst verdwijnen.

    delphi Code:
    1. unit Androidapi.JNI.Toast;
    2.  
    3. //Java bridge class imported by hand by Brian Long ([url]http://blong.com[/url])
    4.  
    5. interface
    6.  
    7. uses
    8.   Androidapi.JNIBridge,
    9.   Androidapi.JNI.JavaTypes,
    10.   Androidapi.JNI.GraphicsContentViewText;
    11.  
    12. type
    13.   TToastLength = (LongToast, ShortToast);
    14.  
    15.   JToast = interface;
    16.  
    17.   JToastClass = interface(JObjectClass)
    18.   ['{69E2D233-B9D3-4F3E-B882-474C8E1D50E9}']
    19.     {Property methods}
    20.     function _GetLENGTH_LONG: Integer; cdecl;
    21.     function _GetLENGTH_SHORT: Integer; cdecl;
    22.     {Methods}
    23.     function init(context: JContext): JToast; cdecl; overload;
    24.     function makeText(context: JContext; text: JCharSequence; duration: Integer): JToast; cdecl;
    25.     {Properties}
    26.     property LENGTH_LONG: Integer read _GetLENGTH_LONG;
    27.     property LENGTH_SHORT: Integer read _GetLENGTH_SHORT;
    28.   end;
    29.  
    30.   [JavaSignature('android/widget/Toast')]
    31.   JToast = interface(JObject)
    32.   ['{FD81CC32-BFBC-4838-8893-9DD01DE47B00}']
    33.     {Methods}
    34.     procedure cancel; cdecl;
    35.     function getDuration: Integer; cdecl;
    36.     function getGravity: Integer; cdecl;
    37.     function getHorizontalMargin: Single; cdecl;
    38.     function getVerticalMargin: Single; cdecl;
    39.     function getView: JView; cdecl;
    40.     function getXOffset: Integer; cdecl;
    41.     function getYOffset: Integer; cdecl;
    42.     procedure setDuration(value: Integer); cdecl;
    43.     procedure setGravity(gravity, xOffset, yOffset: Integer); cdecl;
    44.     procedure setMargin(horizontalMargin, verticalMargin: Single); cdecl;
    45.     procedure setText(s: JCharSequence); cdecl;
    46.     procedure setView(view: JView); cdecl;
    47.     procedure show; cdecl;
    48.   end;
    49.   TJToast = class(TJavaGenericImport<JToastClass, JToast>) end;
    50.  
    51. procedure Toast(const Msg: string; Duration: TToastLength = ShortToast);
    52.  
    53. implementation
    54.  
    55. uses
    56.   FMX.Helpers.Android,
    57.   Androidapi.Helpers;
    58.  
    59. procedure Toast(const Msg: string; Duration: TToastLength);
    60. var
    61.   ToastLength: Integer;
    62. begin
    63.   if Duration = ShortToast then
    64.     ToastLength := TJToast.JavaClass.LENGTH_SHORT
    65.   else
    66.     ToastLength := TJToast.JavaClass.LENGTH_LONG;
    67.   CallInUiThread(procedure
    68.   begin
    69.     TJToast.JavaClass.makeText(SharedActivityContext, StrToJCharSequence(msg),
    70.       ToastLength).show
    71.   end);
    72. end;
    73.  
    74. end.
    Je zou dit dus ook als complete unit kunnen gebruiken. Gewoon dit bestand in je projectdir zetten, opnemen in je project en je kunt die toast() functie aanroepen.

    Er staan daar ook andere interessante voorbeelden.

  5. #20
    Het begint wel een hele berg code te worden voor zo'n klein probleempje

    Ik ga hier binnenkort eens goed in duiken, maar voorlopig werkt mijn oplossing....

    Bedankt voor je hulp !!!

  6. #21
    Berg code valt wel mee. Als je dit als unit plaatst heb je alleen maar de aanroep naar toast(). Deze unit ziet er exact hetzelfde uit als alle andere Android header/java.class files. Het was alleen dat JToast nog niet geïmplementeerd was in XE8.

    Maar goed. De CanClose werkt dus ook bij jou en in nieuwere Delphi versies is deze bug sowieso opgelost.

Page 2 of 2 FirstFirst 1 2

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •