使用Roman Nurik的向导寻呼机示例,如何在以后的页面中访问先前页面中的数据?

时间:2014-12-08 12:16:27

标签: android android-fragments android-viewpager wizard

原谅我缺乏经验,我正在慢慢地自学编程。

我已在我的应用中实施Roman Nurik's Wizard Pager model,以获取用户的手机型号和耳机类型。然后我想在第三页上使用这两个结果来查询数据库...

我有一个数据库查询方法(在我的WizardModel类中(示例中为SandwichWizardModel)),此时会将每个条目返回到我的数据库,并将其放入列表视图中进行选择。我希望能够调整此方法以从第1页和第2页获取字符串以查询数据库并在第3页查找匹配项。

我得到了以下建议:

mWizardModel.findByKey("TITLE_OF_YOUR_PAGE").getData().getString(YourPage.YOUR_FIELD_DATA_KEY)

在我的代码中等同于:

mWizardModel.findByKey("Phone Model").getData().getString(SingleTextFieldPage.SIMPLE_DATA_KEY);

但我无法解决的是如何获取mWizardModel的实例。我尝试了各种方法,但是我得到了一个null对象异常。感觉它可能与非活动类中的上下文有关,我还尝试使用以下新活动:

public class Test extends Activity {

HearingTestWizardModel mWizardModel = new HearingTestWizardModel(getApplicationContext());
String testOut;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.testice);

    testOut = mWizardModel.findByKey("Phone Model").getData().getString(SingleTextFieldPage.SIMPLE_DATA_KEY);


    Log.i("The results from before are: ", testOut);
}

}

但我对此没有运气。如何创建mWizardModel的实例,以便我可以从中调用数据?

如果我需要提供更多详细信息,请询问。使用的示例代码如下:https://github.com/romannurik/Android-WizardPager

1 个答案:

答案 0 :(得分:1)

WizardPager并不是为你想要的而构建的。您需要将输入汇集到3.页面。你可以用SharedPreferences做到这一点。请注意,WizardPager会在显示之前始终加载下一页。所以你必须弄清楚你的3.页面实际上对用户何时可见。

您可以使用Fragment中的代码执行此操作:

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if (isVisibleToUser) {
        if (getView() != null) {
            // load data from page 1&2
            refreshView(getView());
        }
    }
}