我在我的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中的文本转换为按钮。
等待回复。
由于
答案 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();
}