【问题标题】:Cast Class object to EditText in Android?在Android中将Class对象转换为EditText?
【发布时间】:2014-02-09 02:28:11
【问题描述】:
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 元素并验证它们的内容。我在评论部分苦苦挣扎。

即访问 EditText 的文本值..

我不知道如何将 c 对象转换为 EditText 以检查值。

想法?

【问题讨论】:

  • 你的意思是 getText() ?
  • 不,我不能在 c 对象上调用 getText(),因为此时尚未定义它的类,我正在尝试弄清楚如何将其转换为 EditText。

标签: java android android-layout android-gui


【解决方案1】:

尝试使用下面的逻辑

View v = layout.getChildAt(i);

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

    //Do stuff

} else if (v instanceof TextView) {

    //Do other stuff

}

由于EditTextTextView 的子类,您需要先检查EditTextEditText 将作为 TextView 的实例测试为阳性。

【讨论】:

  • 谢谢..在我出于某种原因一直尝试使用 C 而不是 V 之后,我自己意识到了这一点.. 已经晚了.. 哈哈。再次感谢。
【解决方案2】:

大多数使用文本的视图都是从 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();
            // ...
        }
    }
}

【讨论】:

  • 我正要回答同样的问题。感谢这个答案!
猜你喜欢
  • 1970-01-01
  • 2017-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-31
  • 1970-01-01
  • 2017-08-02
相关资源
最近更新 更多