2013-11-22 72 views
0

在我的應用程序,我需要能夠找出關鍵的「頁面」上有數據我已經與幫助下完成的是創建這個如果語句只返回最後

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哪裏我送的內容轉移到其它地方的活動I'l把它們放在我的數據庫

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

那麼你想要達到什麼目的? – Szymon

+2

我想你想'p == null'而不是'p!= null'?實際上,每一行都會覆蓋先前調用的結果。 – Dalmas

+0

你想要第一個結果嗎?將'else'放在後續的if之前。 'else if(p!= null)'。 – Zong

回答

0

試着想想你的代碼將如何執行。

如果p不爲空Bundle p = mWizardModel.findByKey("Surf:Price").getData();後,再在你的條件句都你的if語句將評估爲真(p不是在兩個點零在你的代碼)。

您可能希望將這些if語句嵌套在對方內,或者檢查p == null而不是p != null,因爲無論如何該邏輯會更有意義。

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

爲什麼'String price = null;'? – Derek

+1

然後您可以檢查是否沒有分配。可能發生的情況是沒有任何'如果'的條件是真的。 – Szymon

+0

其實其中一個必須是真實的。我正在使用這個庫[Roman Nuriks Wizard Pager](https://github.com/romannurik/Android-WizardPager),並且我已經分配了它們,以便其中一個需要填寫以便結束。 – Derek

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 。

+0

如果它不eq ual null那麼我還有其他什麼選擇?像是如果> 0? – Derek

+0

這取決於你真正想要'p'的東西。如果你想'p'成爲第一個有效的價格,那麼使用'p == null'而不是'p!= null'(這是給你最後的有效價格)。或者使用'if else'如Szymon提到的那樣,或者使用'm'''替代'p',使用'mWizardModel.findByKey(「Surf:Price」)。getData()!= null' – WOUNDEDStevenJones

+0

當我使用'p == null'時只是跳到下一個'p == null',並沒有真正執行if語句 – Derek

1

如果你不檢查

if(p == null) 

這樣,如果它已經分配一個值,你不會的其他值給p。 不確定是否要在價格中存儲所有非空p值?如果是這樣,請嘗試將一個ArrayList,並把所有的價格值像這樣

ArrayList<String> price = new ArrayList<String>; 

...那麼你每次分配p來一個沒有空值時添加這樣的

price.add(p.getString(Page.SIMPLE_DATA_KEY)); 

希望這有幫助嗎?如果沒有告訴我更多,我會看看我能做些什麼。

+0

請看看我更新的問題! – Derek

+1

@DerekSmith此刻你的代碼只返回一個值,如果mWizardModel.findByKey(「Surf:Price」)。getData();不爲null。這是通過每次p不爲空你要分配一個新值來完成的。因此,您只會獲得最後一個if語句中的值,該語句是您爲其分配p值的最後一個位置。如果你知道你正在尋找的價格的確切數量和順序,將它們放在一個數組中,並在以後用於你的意圖。如果您不知道將查找的價格數量,請使用上述的ArrayList。 –