在我的应用程序中,我需要能够找到哪个关键“页面”上有数据,我已经帮助创建了这个
Bundle p = mWizardModel.findByKey("Surf:Price").getData();
if ( p != null )
{
p = mWizardModel.findByKey("Skate:Price").getData();
}
if ( p != null )
{
p = mWizardModel.findByKey("Snow:Price").getData();
}
String price = p.getString(Page.SIMPLE_DATA_KEY);
但是会发生什么,这只会返回这种情况下的最后一个if语句(“Snow:Price”)
我将如何解决此问题。我已经尝试了很多不同的方法。
if语句放在onClick中,我将字符串发送到另一个活动,我将它们放在我的数据库中
mNextButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mPager.getCurrentItem() == mCurrentPageSequence.size()) {
Bundle t = mWizardModel.findByKey("Surf:Post Title").getData();
if ( t != null )
{
t = mWizardModel.findByKey("Snow:Post Title").getData();
}
if ( t != null )
{
t = mWizardModel.findByKey("Skate:Post Title").getData();
}
String title = t.getString(Page.SIMPLE_DATA_KEY);
Bundle p = mWizardModel.findByKey("Surf:Price").getData();
if ( p != null )
{
p = mWizardModel.findByKey("Skate:Price").getData();
}
if ( p != null )
{
p = mWizardModel.findByKey("Snow:Price").getData();
}
String price = p.getString(Page.SIMPLE_DATA_KEY);
String maincat = mWizardModel.findByKey("Main Category").getData().getString(Page.SIMPLE_DATA_KEY);
Intent i = new Intent(getApplicationContext(), PostPhotosActivity.class);
i.putExtra("pTITLE", title);
i.putExtra("pPRICE", price);
i.putExtra("pCATEGORY", maincat);
startActivity(i);
} else {
if (mEditingAfterReview) {
mPager.setCurrentItem(mPagerAdapter.getCount() - 1);
} else {
mPager.setCurrentItem(mPager.getCurrentItem() + 1);
}
}
}});
这可能会有所帮助,或者我可能在这句话中做错了。
感谢您的帮助!
答案 0 :(得分:1)
你可以这样做:
String price = null;
if ( mWizardModel.findByKey("Surf:Price").getData() != null )
{
price = mWizardModel.findByKey("Surf:Price").getData().getString(Page.SIMPLE_DATA_KEY);
}
else if ( mWizardModel.findByKey("Snow:Price").getData() != null )
{
price = mWizardModel.findByKey("Snow:Price").getData().getString(Page.SIMPLE_DATA_KEY);
}
else if ( mWizardModel.findByKey("Skate:Price").getData() != null )
{
price = mWizardModel.findByKey("Skate:Price").getData().getString(Page.SIMPLE_DATA_KEY);
}
答案 1 :(得分:1)
假设mWizardModel.findByKey("Surf:Price").getData()
没有返回null,那么你的代码只是这样做:
Bundle p = mWizardModel.findByKey("Surf:Price").getData();
p = mWizardModel.findByKey("Skate:Price").getData();
p = mWizardModel.findByKey("Snow:Price").getData();
String price = p.getString(Page.SIMPLE_DATA_KEY);
你每次只是覆盖p。
答案 2 :(得分:1)
你不应该检查
if(p == null)
如果已经为其分配了值,则不会为p分配其他值。 不确定是否要在价格中存储所有无空p值?如果是这样,请尝试制作一个Arraylist并将所有价格值都放在其中
ArrayList<String> price = new ArrayList<String>;
...每次将p分配给非空值
时,都会添加类似的内容price.add(p.getString(Page.SIMPLE_DATA_KEY));
希望这有帮助吗?如果不告诉我更多,我会看到我能做什么。
答案 3 :(得分:0)
尝试考虑代码的执行方式。
如果在p
之后Bundle p = mWizardModel.findByKey("Surf:Price").getData();
不为空,那么if语句中你的条件的将评估为true(p
两者都不为空你的代码中的点数。)
您可能希望将这些if语句嵌套在一起,或者检查p == null
而不是p != null
,因为无论如何这种逻辑会更有意义。
答案 4 :(得分:0)
而不是检查你可以设置是否检查。