17.1.2.500バージョンに追加された機能です。
一部の機能は変更されることがあり、マニュアルも補足されることがあります。
以前のバージョンでは、NexacroActivityを終了するとアプリが終了する制約がありました。従って、2つ以上のNexacroActivityを管理できる機能を補完しました。
簡略化して機能を説明するためにnexacro platfromのFormでApplicationを作成する方法を使用しました。下記では4つの内容について説明します。
MainActivity.java:NexacroUpdatorActivityの派生クラスを設定
ExampleActivity.java:NexacroActivityの派生クラスを設定
AndroidManifest.xml:droidManifest.xmlを設定
Form.xfdl:nexacro platformのFormでApplicationを呼び出す
MainActivity.java
NexacroUpdatorActivityの派生クラスであるMainActivity.javaコードの作成の際、下記のように追加インターフェイスを作成する必要があります。
従来のようにcreateInstanceを使用する方法と、ApplicationのResource Managerで処理する方法を使用することができます。
... @Override public void onCreate(Bundle savedInstanceState) { NexacroResourceManager resourceManager = NexacroResourceManager.createInstance(this); resourceManager.setBootstrapURL("http://[URL]/start_android.json"); resourceManager.setProjectURL("http://[URL]/"); //resourceManager.setContentMode(true); //resourceManager.setFDL("FrameBase::Form_Work.xfdl"); ... }
... @Override public void onCreate(Bundle savedInstanceState) { // naxacroを初期化 Nexacro nexacro = Nexacro.getInstance(this); if (!nexacro.isInitialized()) nexacro.initialize(); // Applicationを生成 NexacroApplication application = nexacro.newApplication(); // Resource Managerを設定 NexacroResourceManager resourceManager = application.getResourceManager(); resourceManager.setBootstrapURL("http://[URL]/start_android.json"); resourceManager.setProjectURL("http://[URL]/"); //resourceManager.setContentMode(true); //resourceManager.setFDL("FrameBase::Form_Work.xfdl"); ... }
MainActivityを実行する際に特定のフォームを実行しようとする場合は、下記のようにsetContentMode関数で「true」を設定し、setFDL関数にformファイル名を指定します。
public void onCreate(Bundle savedInstanceState) { ... resourceManager.setContentMode(true); resourceManager.setFDL("FrameBase::Form_Work.xfdl"); ...
ExampleActivity.java
NexacroActivityの派生クラスであるExampleActivity.javaコードは下記のように作成できます。下記の例は、nexacro platformのFormでsystem.execBrowserメソッドを使用して特定のForm名を渡し、これを取得してApplicationを生成します。
public class ExampleActivity extends NexacroActivity { @Override public void onCreate(Bundle savedInstanceState) { // Intentから呼び出すFDL名を確認 Uri data = getIntent().getData(); String formName = data.getHost(); // 設定した名前(key)でnexacro applicationを生成 createNexacroApplication(formName); // Resource Managerを設定 NexacroResourceManager resourceManager = getNexacroApplication().getResourceManager(); resourceManager.setBootstrapURL("http://[URL]/start_android.json"); resourceManager.setProjectURL("http://[URL]/"); resourceManager.setContentMode(true); resourceManager.setFDL("FrameBase::" + formName + ".xfdl"); super.onCreate(savedInstanceState); } }
AndroidManifest.xml
従来はNexacroUpdatorActivityの派生クラス(nexacro.launcher.MainActivity)のみ設定していましたが、下記のようにNexacroActivityの派生クラス(nexacro.launcher.ExampleActivity)を設定することができます。
... <activity android:name="nexacro.launcher.ExampleActivity" android:windowSoftInputMode="adjustResize" android:theme="@style/Theme.AppCompat.Light.NoActionBar" android:configChanges="orientation|keyboardHidden|screenSize"> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:scheme="nexacro"/> </intent-filter> </activity> ...
Form.xfdl
nexacro platformのFormでは、下記のようにsystem.execBrowserメソッドを使用してForm名を渡し、NexacroActivityで特定のFormを実行できるようにします。"nexacro"というスキーマ名はAndroidManifest.xmlに設定されている名前です。
this.Button01_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo) { system.execBrowser("nexacro://Sample"); };
NexacroActivityで実行されたFormは、独立したApplicationとして動作するため、exitメソッドを実行すると、該当Activityのみ終了します。
this.Button01_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo) { nexacro.getApplication().exit(); };