if语句仅返回最后一个

时间:2013-11-22 19:37:17

标签: android if-statement null

在我的应用程序中,我需要能够找到哪个关键“页面”上有数据,我已经帮助创建了这个

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);
                }
            }

        }});

这可能会有所帮助,或者我可能在这句话中做错了。

感谢您的帮助!

5 个答案:

答案 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)

而不是检查你可以设置是否检查。