请原谅我缺乏经验,我正在慢慢自学编程。
我已经实现了 Roman Nurik's Wizard Pager model在我的应用程序中,获取用户的手机型号和耳机类型。然后我想使用第三页上的这两个结果查询数据库...
我有一个数据库查询方法(它在我的 WizardModel 类(示例中的 SandwichWizardModel)中),此时将每个条目返回到我的数据库,并将其放入 ListView 中以供选择。我希望能够调整此方法以从第 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 的实例。我尝试了各种方法,但我得到了一个空对象异常。感觉这可能与非 Activity 类中的上下文有关,我也尝试了一个新的 Activity :
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
最佳答案
WizardPager 不是为您想要的而构建的。您需要将您的输入汇集到 3. 页面。您可以使用 SharedPreferences 来做到这一点。请注意 WizardPager 总是在显示前加载下一页。因此,您必须弄清楚您的页面何时对用户真正可见。
你可以在你的 fragment 中使用这段代码来做到这一点:
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
if (getView() != null) {
// load data from page 1&2
refreshView(getView());
}
}
}
关于android - 使用 Roman Nurik 的 Wizard Pager 示例,如何在后面的页面中访问前面页面的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27357823/