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();
};