最近のアクセス:
ネイティブ モバイル アプリケーションで Interop の ShowError メソッドを使用する方法

このメソッドは、ネイティブ モバイル アプリケーションで Composite コマンドが失敗したときにエラーを表示するために自動的に実行されるのと同じことを実行します。

戻り値: Numeric(3)
説明
0 エラーなし
1 不明なエラー 
2 ユーザーによるアクションのキャンセル
3 不適切なパラメーター

実行されるアクションが、オンラインの Procedure オブジェクトまたは Data Provider オブジェクトなど、サーバー側にある GeneXus オブジェクトを呼び出す場合、返される値はこの呼び出しによって返される HTTP コードに対応します (例: 404 または 500)。サーバーから応答がない場合は、&Err 変数の値は 1 になります。
パラメーター: なし。

1) エラーを処理するために Composite コマンドを使用する必要がある場合もありますが、別のものを実装する必要もあります。たとえば、オンラインアプリケーションで「お気に入り」のトグルボタンを解決する必要があるとします。
イベントを次のように定義できます。
Event “ToggleFavorites” 
  Composite 
     &IsFav = not &IsFav 
     ProcSetFav(&IsFav) // プロシージャーは、現在の状態 (「お気に入り」か「お気に入り」でないか) を示すために、動的なプロパティを使用してスタイルを変更   EndComposite 
EndEvent
このソリューションの問題点は、外観が変更されるが、サーバーへの往復後に行われるため、UX が良くないことです。さらに、プロシージャーが失敗した場合、&IsFav の値は適切な状態になりません。
別のソリューションは次のとおりです。
Event “ToggleFav” 
  Composite 
     &IsFav = not &IsFav 
     Control.Class = iif(&IsFav, !"FavClass”, !“FavClass”) 
     ProcSetFav(&IsFav) // この場合、プロシージャーは「お気に入り」の新しい状態を保存するのみ
  EndComposite 
EndEvent
このソリューションは優れた UX フィードバックを提供しますが、プロシージャーが失敗した場合、&IsFav の値が適切な状態にならないという点で、上記のソリューションと同じ問題があります。
そこで、Interop.ShowError メソッドを使用する次のソリューションを検討します。
Event “ToggleFav” 
  Do ’ToogleIsFav’ 
  ProcSetFav(&IsFav) // //この場合、プロシージャーは「お気に入り」の新しい状態を保存するのみ 
  if Interop.ShowError() <> 0 
    Do ’ToogleIsFav’ // プロシージャーが失敗する前の状態に復元 
endif 
EndEvent 

Sub ’ToogleIsFav’ 
   &IsFav = not &IsFav 
   Control.Class = iif(&IsFav, !oFavClass”, !“FavClass”) 
EndSub
Interop.ShowError() メソッドは GeneXus によって提供され、Composite コマンドが失敗したときにエラーを表示するために自動的に行われるのと同じことを行います。
次の GeneXus コードと同じように解決します。
Sub “ShowError”if &err <> 0 and&err <> 2 // エラーなし、キャンセルif &errMsg.IsEmpty()
      msg(“GXM_ThereWasAnErrorExecutingAction”)
    else
      msg(&errMsg)
    endif
  endif
EndSub
さらに、If コマンドでの評価を容易にするために、返された &Err 変数がロードされます。

2) 次のコードには Composite コマンドがなく、Interop.ShowError メソッドを使用してエラーを示しています。
Event 'InsertNewUser’ 
    &ErrorResult.SetEmpty() 
    ProcNewUser(&UserInformation) 
    &ErrorResult = Interop.ShowError() 
    if &ErrorResult <> 0 
        //何らかのコード...     Else 
        msg("A new user was added successfully", nowait) 
    EndIf 
Endevent

適用範囲

ジェネレーター: AndroidApple

使用可能バージョン

GeneXus 17 Upgrade 11 以降。

参考情報

Interop 外部オブジェクト

 

サブページ
Created: 23/01/23 21:02 by Admin Last update: 23/01/26 00:09 by Admin
カテゴリ
Powered by GXwiki 3.0