Android 如何从以编程方式创建的edittext获取Text()
我以编程方式创建了两个edittext,我需要从他那里获取文本 这是我创建编辑文本的代码Android 如何从以编程方式创建的edittext获取Text(),android,android-edittext,Android,Android Edittext,我以编程方式创建了两个edittext,我需要从他那里获取文本 这是我创建编辑文本的代码 layoutParams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); layoutParams.setMargins(10, 10, 10, 10); //First EditText edText = new E
layoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(10, 10, 10, 10);
//First EditText
edText = new EditText(getActivity());
edText.setId(0);
edText.setLayoutParams(new LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT,
1f));
edText.setBackgroundResource(R.drawable.edittext);
edText.setPadding(5, 5, 5, 5);
linear=(LinearLayout)rootView.findViewById(R.id.edittextpanel);
linear.addView(edText ,layoutParams);
nb++;
//Second EditText
edText = new EditText(getActivity());
edText.setId(1);
edText.setLayoutParams(new LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT,
1f));
edText.setPadding(5, 5, 5, 5);
edText.setBackgroundResource(R.drawable.edittext);
linear.addView(edText ,layoutParams);
请帮帮我,我被封锁了
edText = new EditText(getActivity());
edText.setId(id);
String stringAnswer = edText.getText().toString();
如果要创建和引用多个编辑文本,则必须创建一个EditText数组
List<EditText> allEDs = new ArrayList<EditText>();
String[] ETResults = new String[allEDs.size()];
把他们推到阵列中
allEDs.add(edText);
创建与EditText数组大小相同的字符串数组
List<EditText> allEDs = new ArrayList<EditText>();
String[] ETResults = new String[allEDs.size()];
循环遍历EditText数组,并将转换后的结果放入字符串数组
for(int i=0; i < allEDs.size(); i++){
ETResults[i] = allEDs.get(i).getText().toString();
}
维护对两个
编辑文本的引用。将以下内容放在片段的主体中,使其可以全局访问
EditText edText1;
EditText edText2;
然后在你展示的方法中,你可以使用
// Do some stuff
edText1 = new EditText(getActivity());
// Do some more stuff
edText2 = new EditText(getActivity());
...
String text1 = edText1.getText().toString();
String text2 = edText2.getText().toString();
稍后,当您需要获取可以使用的文本时
// Do some stuff
edText1 = new EditText(getActivity());
// Do some more stuff
edText2 = new EditText(getActivity());
...
String text1 = edText1.getText().toString();
String text2 = edText2.getText().toString();
或者,您可以稍后在片段中使用它们的ID找到它们
LinearLayout linear = (LinearLayout) findViewById(R.id.edittextpanel);
EditText et = (EditText) linear.findViewById(0);
String text1 = et.getText().toString();
et = (EditText) linear.findViewById(1);
String text2 = et.getText().toString();
试试看{
final ViewGroup ViewGroup=(ViewGroup)((ViewGroup)context.findviewbyd(android.R.id.content)).getChildAt(0);
对于(int i=0;i)当使用edText
实例化两个EditText
小部件时,这将不起作用,因为edText
将始终引用最后一个(即第二个)已实例化的EditText
。已更新答案以合并多个EditText。您确实意识到与ArrayList
,String[]相关的所有代码
和for
在检索文本时,循环可以减少到一行或两行,不是吗?你确实意识到人们从解释和注释良好的代码中获益,不是吗?这里的目标不是优化,因为提问的人显然还在学习基础知识。是的,但你的第一个代码块只适用于第二行dEditText
并且您添加的代码对于2EditText
来说太复杂了。不仅如此,它还是过于复杂了。假设EditText
的id连续,您可以使用String text=((EditText)linear.findViewById(id)).getText().toString()获得文本;。无需使用数组列表
或将每个编辑文本中的每个字符串
读入字符串[]
-如果您知道id,只需使用findViewById