17.1.2.500 패치에 추가된 기능입니다.
일부 기능은 변경될 수 있으며 매뉴얼도 보완될 수 있습니다.
이전 버전에서는 NexacroActivity를 종료하는 경우 앱이 종료되는 제약을 가지고 있습니다. 이를 보완하기 위해 2개 이상의 NexacroActivity를 관리할 수 있도록 기능을 보완했습니다.
간략하게 기능 설명을 위해 넥사크로플랫폼 Form에서 Application 생성을 요청하는 방식을 사용했습니다. 아래 내용에서는 4가지 내용을 다룹니다.
MainActivity.java: NexacroUpdatorActivity 파생 클래스 설정
ExampleActivity.java: NexacroActivity 파생 클래스 설정
AndroidManifest.xml: droidManifest.xml 설정
Form.xfdl: 넥사크로플랫폼 Form에서 Application 호출
MainActivity.java
NexacroUpdatorActivity 파생 클래스인 MainActivity.java 코드 작성 시 아래와 같이 추가 인터페이스를 작성해주어야 합니다.
기존 방식처럼 createInstance 를 사용하는 방법과 Application에서 Resource Manager를 가져와서 처리하는 방법 2가지 모두 사용할 수 있습니다.
...
@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 코드는 아래와 같이 작성할 수 있습니다. 아래 예제는 넥사크로플랫폼 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
넥사크로플랫폼 Form에서는 아래와 같이 system.execBrowser 메소드를 사용해 폼 이름을 넘겨주고 NexacroActivity에서 특정 폼을 실행할 수 있도록 합니다. "nexacro"라는 스키마명은 AndroidManifest.xml에서 설정한 이름입니다.
this.Button01_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
system.execBrowser("nexacro://Sample");
};NexacroActivity에서 실행된 폼은 독립된 Application으로 동작하기 때문에 exit 메소드를 실행하면 해당 Activity만 종료합니다.
this.Button01_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
nexacro.getApplication().exit();
};