从动态创建的edittext获取文本到按钮android java

时间:2014-12-29 12:11:54

标签: java android android-edittext

我在我的Android应用程序上创建了动态edittext,如下所示:

protected void onCreate(Bundle savedInstanceState) {

RelativeLayout layout = (RelativeLayout) findViewById(R.id.linearLayout1);
        final EditText[] Et = new EditText[10];
        int prevTextViewId = 0;
        int add = 0;
        int add1 = 0;
        for (int a = 0; a < Arr.length; a++) {

            Et[a] = new EditText(this);
            RelativeLayout.LayoutParams param = new RelativeLayout.LayoutParams(
                    (int) LayoutParams.WRAP_CONTENT,
                    (int) LayoutParams.WRAP_CONTENT);
            param.leftMargin = 25;
            param.topMargin = (a + 1) * (100 + add1);
            Et[a].setPadding(5, 23, 5, 5);
            Et[a].setLayoutParams(param);
            Et[a].setSingleLine(false);
            Et[a].setHorizontalScrollBarEnabled(false);
            Et[a].setWidth(280);
            Et[a].getText().toString();
            layout.addView(Et[a]);
            add = add + 25;
            add1 = add1 + 15;
        }
}

我希望将动态创建的edittext中的文本转换为如下按钮:

btn_doneAnswer = (Button) findViewById(R.id.btn_doneAnswer);
        btn_doneAnswer.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                   for (int a = 0; a < Arr.length; a++) {
                        Et[a] = new EditText(this);
                        String text += Et[a].getText().toString();
                    }
                    Bundle bundle = new Bundle();
                    Intent i_backToAddItem = new Intent(
                            AnswerActivityMultiText.this,
                            QuestionActivityDynamic.class);
                    bundle.putString("text", text);
                    bundle.putString("MultiQues", MultiQues);
                    i_backToAddItem.putExtras(bundle);
                    startActivity(i_backToAddItem);

            }
        });

但是我在此行Et[a] = new EditText(this);的按钮onclick方法中收到错误:

The constructor EditText(new View.OnClickListener(){}) is undefined

按钮onclick方法中此行+=处的另一个错误:

Syntax error on token "+=", = expected

请建议我如何将动态创建的edittext中的文本转换为按钮。

等待回复。

由于

2 个答案:

答案 0 :(得分:1)

你不必在onClick中再次初始化EditText。您应该直接使用EditText对象来获取文本。这一行

Et[a] = new EditText(this);

根本不需要!

对于使用'+ ='运算符的错误,您将声明字符串并在一行中使用运算符(+ =)。你必须将声明部分从for循环中分离出来,然后使用'+ ='。这是完整的代码:

btn_doneAnswer = (Button) findViewById(R.id.btn_doneAnswer);
    btn_doneAnswer.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
                String text;
               for (int a = 0; a < Arr.length; a++) {
                    text += Et[a].getText().toString();
                }
                Bundle bundle = new Bundle();
                Intent i_backToAddItem = new Intent(
                        AnswerActivityMultiText.this,
                        QuestionActivityDynamic.class);
                bundle.putString("text", text);
                bundle.putString("MultiQues", MultiQues);
                i_backToAddItem.putExtras(bundle);
                startActivity(i_backToAddItem);

        }
    });

答案 1 :(得分:-1)

你的问题是这样的:

for (int a = 0; a < Arr.length; a++) {
    Et[a] = new EditText(this);
    String text += Et[a].getText().toString();
}

在这一行:

Et[a] = new EditText(this);

这个是onClickListener对象,你必须有class.this(其中class是创建此代码的文件的类名)。

在另一行:

String text += Et[a].getText().toString();

您始终创建一个新的String,而不是创建,而是进行添加。这是一个Java概念失败。

你必须这样做:

String text = "";
for (int a = 0; a < Arr.length; a++) {
    Et[a] = new EditText(class_name.this);
    text += Et[a].getText().toString();
}