繁体   English   中英

将文本从动态创建的edittext放入按钮android java

[英]getting text from dynamically created edittext into a button android java

我已经在我的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);

            }
        });

但是我在下面这行的按钮onclick方法中遇到错误Et[a] = new EditText(this);

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

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

Syntax error on token "+=", = expected

请建议我如何将动态创建的edittext中的文本输入按钮。

等待回复。

谢谢

您不必在onClick中再次初始化EditText。 您应该直接使用EditText对象获取文本。 所以线

Et[a] = new EditText(this);

完全不需要!

对于“ + =”运算符的错误,您需要声明字符串并在一行中使用operator(+ =)。 您必须将声明部分从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);

        }
    });

您的问题在于以下几行:

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();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM