如何跳过WizarDroid中的WizardStep

时间:2014-07-18 10:33:27

标签: android wizard

我使用WizarDroid,如果满足某些条件,我打算跳过一步。

我有以下流程:

flow = new WizardFlow.Builder()
      .setActivity(this)                      //First, set the hosting activity for the wizard
      .setContainerId(R.id.step_container)    //then set the layout container for the steps.
      .addStep(WStep1.class)                   //Add your steps in the order you want them
      .addStep(WStep2.class)                  //to appear and eventually call create()
      .addStep(WStep3.class)                 //to create the wizard flow.
      .create();

如果设置了变量,我打算跳过WStep2。

根据其教程,我只能禁用以进入下一步,直到我将其设置为:Controlling wizard flow dynamically

如何告诉向导可以跳过下一步?

2 个答案:

答案 0 :(得分:1)

似乎WizarDroid无法从WizardFlow中删除步骤。

但是,您可以检查WStep2中提到的变量,然后只需拨打goNext()。这肯定会有用。

如果您想尝试其他方式,您也可以使用(虽然我不能保证它会起作用):

setStepCompleted(1, true) //setStepCompleted(int stepPosition, boolean stepCompleted)

编辑:看到你也想在向导中向后移动,你将不得不拆分向导。

我的意思是,如果你想在某些情况下跳过WStep3:

你在MainActivity.class中的

flow1 = new WizardFlow.Builder()
      .setActivity(this)
      .setContainerId(R.id.step_container)
      .addStep(WStep1.class)
      .addStep(WStep2.class)
      .create();

在WStep2.class中

if (skipWStep3()){
    flow2 = new WizardFlow.Builder()
              .setActivity(this)
              .setContainerId(R.id.step_container)
              .addStep(WStep4.class)
              .addStep(WStep5.class)
          .create();
}
else {
    flow2 = new WizardFlow.Builder()
              .setActivity(this)
              .setContainerId(R.id.step_container)
              .addStep(WStep3.class)
              .addStep(WStep4.class)
              .addStep(WStep5.class)
          .create();
}

答案 1 :(得分:0)

默认情况下,BasicWizardLayout不支持跳过某个步骤。您必须对其进行子类化并使用API​​方法Wizard#setCurrentStep,或者按照here解释的方法对WizardFragment进行子类编写自己的向导布局类。

  

void org.codepond.wizardroid.Wizard.setCurrentStep(int     stepPosition)

     

设置向导的当前步骤

     

参数

stepPosition the position of the step within the WizardFlow