我怎样才能使用字符串变量而不是使用editText1.getText()。toString();

时间:2013-11-26 13:24:24

标签: android android-edittext

如:

String name= editText1.getText().toString();

并将此名称用于getname变量

String getname = name;

即写

editText1.getText().toString();

5 个答案:

答案 0 :(得分:2)

我不认为这在Java中是可行的,因为没有任何'eval'方法。

您应该使用Map来实现:

Map<String, EditText> editTextMap = new HashMap<String, EditText>();
editTextMap.put("editText1", findViewById(R.id.editText1);
editTextMap.put("editText2", findViewById(R.id.editText2);
editTextMap.put("editText3", findViewById(R.id.editText3);

并称之为:

editTextMap.get("editText1").getText().toString();

否则,你可以使用反射,但它有点难以阅读。

答案 1 :(得分:1)

当我收到这个问题时,问题的目的是减少代码行以从编辑文本中获取字符串。 这是我用来从我的活动中的所有编辑文本中获取文本的代码:

public String getName(int id){
EditText et=(EditText)findViewById(id);
return et.gettext.toString();
}

String Name=getName(R.id.editText1);

我将EditText的id作为参数传递,并获得控制文本作为参数。

答案 2 :(得分:0)

不要变量,make方法。像:

String getname(){
   return editText1.getText().toString()
}

并将其用于:

String getname=getname();

答案 3 :(得分:0)

一个简单的答案是不,你不能这样做。我不知道您是否了解任何OOPS语言(C ++,Java等)的基本知识,但您可以将editText视为访问方法getText()的对象,从而获得的值是然后发送到toString()函数,该函数将发送值转换为String。使用

String name="editText1."+"getText()."+"toStting()";

您只是创建一个值为editText1.getText().toString()的字符串。因此,无需获取editText的值,然后使用String将其转换为toString()

P.S。在开始android编程之前,你应该阅读任何OOP语言的基础知识。

答案 4 :(得分:0)

使用反思:

方法:

public <T extends EditText> String value(T field) throws NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException{        
    Method method01 = field.getClass().getMethod("getText",  (Class<?>[]) null);

    Editable  editableValue = (Editable)  method01.invoke(field, (Object[]) null);
    String    stringValue   = editableValue.toString();

    return stringValue;
}

使用方法:

            try {
                Toast.makeText(getApplicationContext(), value(myEditText), Toast.LENGTH_SHORT).show();
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (NoSuchMethodException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            }

编辑:

如果您只想使用反射:

public <T extends EditText> String value(T field) throws NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException{        
    Method method01 = field.getClass().getMethod("getText",  (Class<?>[]) null);

    Editable  editableValue = (Editable)  method01.invoke(field, (Object[]) null);

    Method method02 = editableValue.getClass().getMethod("toString", (Class<?>[]) null);

    String stringValue = (String) method02.invoke(editableValue, (Object[]) null);

    return stringValue;
}
相关问题