Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从以编程方式创建的edittext获取Text()_Android_Android Edittext - Fatal编程技术网

Android 如何从以编程方式创建的edittext获取Text()

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

我以编程方式创建了两个edittext,我需要从他那里获取文本 这是我创建编辑文本的代码

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
在检索文本时,循环可以减少到一行或两行,不是吗?你确实意识到人们从解释和注释良好的代码中获益,不是吗?这里的目标不是优化,因为提问的人显然还在学习基础知识。是的,但你的第一个代码块只适用于第二行d
EditText
并且您添加的代码对于2
EditText
来说太复杂了。不仅如此,它还是过于复杂了。假设
EditText
的id连续,您可以使用
String text=((EditText)linear.findViewById(id)).getText().toString()获得文本
;。无需使用
数组列表
或将每个
编辑文本中的每个
字符串
读入
字符串[]
-如果您知道id,只需使用
findViewById