Java 为什么for循环在setText方法中不起作用
我正在尝试创建一个重复文本应用程序。因此,我使用Java 为什么for循环在setText方法中不起作用,java,android,Java,Android,我正在尝试创建一个重复文本应用程序。因此,我使用for循环来重复文本,并在文本视图中显示此文本 当我按下一个按钮时,我希望它生成文本的次数与循环运行的次数相同 这是我的密码: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); enterText
for
循环来重复文本,并在文本视图中显示此文本
当我按下一个按钮时,我希望它生成文本的次数与循环运行的次数相同
这是我的密码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
enterText = findViewById(R.id.editText);
repeatText = findViewById(R.id.repeatTime);
genTxt = findViewById(R.id.genText);
genrate = findViewById(R.id.generate);
reset = findViewById(R.id.reset);
copy = findViewById(R.id.copyButton);
share = findViewById(R.id.shareButton);
genrate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Storing text in Gen Text Area
String txt = enterText.getText().toString().trim();
//Storing Repeat value
String repeats = repeatText.getText().toString().trim();
int repealVal = Integer.parseInt(repeats);
for(int i=1;i<=repealVal;i++){
genTxt.setText(txt);
Log.d("tets","loop "+i+txt);
}
}
});
}
public void reset(View view){
enterText.setText("");
repeatText.setText("");
genTxt.setText("");
}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
enterText=findviewbyd(R.id.editText);
repeatText=findViewById(R.id.repeatTime);
genTxt=findviewbyd(R.id.genText);
genrate=findviewbyd(R.id.generate);
重置=findViewById(R.id.reset);
复制=findViewById(R.id.copyButton);
share=findViewById(R.id.shareButton);
genrate.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//在Gen文本区域中存储文本
String txt=enterText.getText().toString().trim();
//存储重复值
String repeats=repeatText.getText().toString().trim();
int=Integer.parseInt(重复);
对于(int i=1;i请尝试将onClick
方法更改为以下内容:
genrate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Storing text in Gen Text Area
String txt = enterText.getText().toString().trim();
//Storing Repeat value
String repeats = repeatText.getText().toString().trim();
int repealVal = Integer.parseInt(repeats);
for(int i=1;i<=repealVal;i++){
genTxt.setText(genTxt.getText() + txt);
Log.d("tets","loop "+i+txt);
}
}
});
genrate.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//在Gen文本区域中存储文本
String txt=enterText.getText().toString().trim();
//存储重复值
String repeats=repeatText.getText().toString().trim();
int=Integer.parseInt(重复);
对于(int i=1;i,您在这里一次又一次地将文本设置为相同的TextView
。
如果您想动态生成多个TextView
s,可以尝试以下解决方案
为要添加文本的xml
中的根布局指定一个id。这里我使用的是LinearLayout
。按如下方式将其添加到代码中:
LinearLayout linearLayout = findViewById(R.id.ll) //ll is the id of LinearLayout
然后将其添加到您的onclick
TextView txtView;
for(int i = 1; i <= repealVal; i++) {
txtView = new TextView(MainActivity.this);
txtView.setText(txt);
linearLayout.addView(txtView);
}
TextView-txtView;
对于(int i=1;i),每次您只是用相同的txt替换txtgenTxt.setText(txt);
Text对象在每次调用setText()时都被覆盖。详细说明:您每次都需要连接输入或生成新对象。我建议第一个建议使用append
而不是setText
如果您的问题得到正确答案,请将该答案视为正确答案。我认为将字符串附加到一个多行文本视图将比crea更优化点击大量文本视图。