原谅我缺乏经验,我正在慢慢地自学编程。
我已在我的应用中实施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
答案 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());
}
}
}