如:
String name= editText1.getText().toString();
并将此名称用于getname变量
String getname = name;
即写
editText1.getText().toString();
答案 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;
}