Haga clic derecho en el paquete com.sap.flows
y seleccione Nuevo> Actividad> Actividad vacía. Nombra la actividad CustomActivity
.
Reemplazar el código CustomActivity
con el código de abajo.
package com.sap.flows;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
public class CustomActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_custom);
}
public void onFinishSuccess(View v){
setResult(-1);
finish();
}
public void onFinishFailure(View v){
setResult(1);
finish();
}
}
El es CustomActivity
la clase aplica métodos que serán llamados cuando se realicen los pasos del flujo. El es onSuccess
la llamada debe ser -1 setResult
argumento, mientras que otras funciones pueden tener un número entero positivo.
Agrega el contenido de res/layout/activity_custom.xml
con el siguiente código.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".CustomActivity"
android:orientation="vertical">
<Button
android:id="@+id/finishSuccess"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Finish with Success"
android:onClick="onFinishSuccess"
tools:layout_editor_absoluteX="1dp"
tools:layout_editor_absoluteY="0dp" />
<Button
android:id="@+id/finishFail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Finish with Failure"
android:onClick="onFinishFailure"
tools:layout_editor_absoluteX="1dp"
tools:layout_editor_absoluteY="0dp" />
</LinearLayout>
Esto crea un diseño de pantalla de actividad que consta de 2 botones para probar la actividad personalizada.
Crea una clase llamada CustomStep
y reemplace el código generado con lo siguiente.
package com.sap.flows;
import com.sap.cloud.mobile.flow.AsyncResultStep;
import com.sap.cloud.mobile.flow.FlowContext;
import com.sap.cloud.mobile.flow.FlowManagerException;
import com.sap.cloud.mobile.flow.ResultActionHandler;
import com.sap.cloud.mobile.flow.StepActionHandler;
import com.sap.cloud.mobile.flow.StepName;
import com.sap.cloud.mobile.flow.onboarding.OnboardingContext;
import com.sap.cloud.mobile.flow.onboarding.presenter.FlowPresentationActionHandler;
import com.sap.cloud.mobile.flow.onboarding.presenter.FlowPresentationContext;
public class CustomStep implements AsyncResultStep {
private OnboardingContext context;
private StepActionHandler actionHandler;
@StepName("custom")
public void launchActivity(FlowContext flowContext, StepActionHandler stepActionHandler){
context = (OnboardingContext) flowContext;
actionHandler = stepActionHandler;
FlowPresentationActionHandler flowPresentationActionHandler = context.getFlowPresenationActionHandler();
if (flowPresentationActionHandler != null) {
flowPresentationActionHandler.present(10000, CustomActivity.class.getName());
} else {
actionHandler.onFailure(new IllegalArgumentException("FlowPresentationActionHandler Expected"));
}
}
@Override
public ResultActionHandler getResultActionHandler() {
return new ResultActionHandler() {
@Override
public void onResult(FlowContext flowContext) {
if (((FlowPresentationContext) flowContext).getResultCode() == -1) {
actionHandler.onSuccess(context);
} else {
actionHandler.onFailure(new FlowManagerException("Failed",flowContext));
}
}
};
}
}
Tenga en cuenta que en el CustomStep
clases @StepName
se agrega la anotación. El método se ejecutará cuando CustomStep
clase incluida en el flujo con nombre nombrado.
Agrega los siguientes métodos MainActivity.java
.
private void startCustomFlow() {
Flow flow = new Flow("custom");
flow.setSteps(new Step[] {
new CustomStep() // shows finish on success or failure button screen
});
flowManagerService.execute(flow, flowContext, new FlowActionHandler() {
@Override
public void onFailure(Throwable t) {
LOGGER.debug("onFailure in custom called: " + t);
showAlertDialog("Custom", t);
}
@Override
public void onSuccess(FlowContext result) {
LOGGER.debug("Custom flow completed successfully.");
}
});
}
public void onCustom(View v) {
startCustomFlow();
}
Agrega el siguiente código activity_main.xml
debajo de las etiquetas de Otros botones.
<Button
android:id="@+id/b_custom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onCustom"
android:text="Custom" />