2014-02-09 25 views
0
public void changeCurrency(RelativeLayout layout) { 
    for (int i = 0; i < layout.getChildCount(); i++) { 
     View v = layout.getChildAt(i); 
     Class c = v.getClass(); 
     if (c == EditText.class) { 
      // validate EditClass 
     } else if (c == TextView.class) { 
      //validate RadioButton 
     } 
    } 
} 

在上面的代碼中,我試圖遍歷佈局中的gui元素並驗證其內容。我在評論部分掙扎。在Android中將類對象轉換爲EditText?

I.e.獲得訪問EditText的文本值..

我想不出如何將c對象轉換爲EditText來檢查值。

想法?

+0

你的意思是一個getText()? – user2511882

+0

不,我不能在c對象上調用getText(),因爲它的類沒有被定義在那個點上,我試圖找出如何將它轉換爲EditText。 –

回答

4

嘗試使用下面的邏輯

View v = layout.getChildAt(i); 

if (v instanceof EditText) { 
    EditText et = (EditText) v; 

    //Do stuff 

} else if (v instanceof TextView) { 

    //Do other stuff 

} 

由於EditTextTextView一個子類,你需要檢查EditText第一。 EditText將作爲TextView的一個實例進行測試。

+0

謝謝..自己意識到這一點後,我一直試圖投C,而不是V出於某種原因..這是遲到..大聲笑。再次感謝。 –

1

大多數使用文本的視圖都是從TextView擴展而來的。如果你所做的只是驗證文本,這應該就足夠了。

public void changeCurrency(RelativeLayout layout) { 
    for (int i = 0; i < layout.getChildCount(); i++) { 
     View v = layout.getChildAt(i); 
     if (v instanceof TextView) { 
      TextView t = (TextView) v; 
      String text = t.getText().toString(); 
      // ... 
     } 
    } 
} 
+0

我正要回答同樣的問題。榮譽這個答案! – user2511882