Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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
Java 为什么for循环在setText方法中不起作用_Java_Android - Fatal编程技术网

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替换txt
genTxt.setText(txt);
Text对象在每次调用setText()时都被覆盖。详细说明:您每次都需要连接输入或生成新对象。我建议第一个建议使用
append
而不是
setText
如果您的问题得到正确答案,请将该答案视为正确答案。我认为将字符串附加到一个多行文本视图将比crea更优化点击大量文本视图。