在向TextView添加一些单词后,我尝试在java android中使用一个简单的按钮来更改字符串的某些部分,但它没有';行不通

在向TextView添加一些单词后,我尝试在java android中使用一个简单的按钮来更改字符串的某些部分,但它没有';行不通,java,android,string,replace,textview,Java,Android,String,Replace,Textview,在开始之前,我使用按钮向TextView添加了一些单词,然后我尝试更改这些单词,我最近使用一个简单的按钮向TextView添加了这些单词,但没有成功 但是如果我使用的是我已经在TextView上设置的默认文本(这意味着我没有向TextView添加任何新词,只是替换了已经存在的部分词),它就可以工作了,为什么会发生这种情况,我的代码有什么问题吗?解决方案是什么 对不起,我的英语很差,很难用英语解释一切,希望你们都明白我的意思 谢谢,这是我的密码 public class MainActivity

在开始之前,我使用按钮向TextView添加了一些单词,然后我尝试更改这些单词,我最近使用一个简单的按钮向TextView添加了这些单词,但没有成功

但是如果我使用的是我已经在TextView上设置的默认文本(这意味着我没有向TextView添加任何新词,只是替换了已经存在的部分词),它就可以工作了,为什么会发生这种情况,我的代码有什么问题吗?解决方案是什么

对不起,我的英语很差,很难用英语解释一切,希望你们都明白我的意思

谢谢,这是我的密码

public class MainActivity extends AppCompatActivity {

private TextView output;
private Button joe, lee, ricele;
private String outputValue;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //name to be added or replace
    joe = findViewById(R.id.joe);
    lee = findViewById(R.id.lee);
    ricele = findViewById(R.id.ricele);

    //get TextView id
    output = findViewById(R.id.output);

    //get String from TextView
    outputValue = output.getText().toString();

    //to added or update the last name to the output(TextView)
    if (!outputValue.contains("ricele")) {
        joe.setOnClickListener(new View.OnClickListener() {
            @SuppressLint("SetTextI18n")
            @Override
            public void onClick(View v) {
                output.append(" ricele");
            }
        });
    }

    //to replace the last name "ricele" to "lee" (but this is didn't work)
    if (outputValue.contains("ricele")) {
        lee.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                outputValue = outputValue.replace("ricele", "lee");
                output.setText(outputValue);
            }
        });
    }
}

代码中的问题是,仅当条件匹配时才设置onclicklistener。如果在单击处理程序时进入内部,则应移动。像这样的

//to added or update the last name to the output(TextView)
        joe.setOnClickListener(new View.OnClickListener() {
            @SuppressLint("SetTextI18n")
            @Override
            public void onClick(View v) {
                String outputValue = output.getText().toString();
                if (!outputValue.contains("ricele")) {
                    output.append(" ricele");
                }
            }
        });

    //to replace the last name "ricele" to "lee" (but this is didn't work)

        lee.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String outputValue = output.getText().toString();
                if (outputValue.contains("ricele")) {
                    outputValue = outputValue.replace("ricele", "lee");
                    output.setText(outputValue);
                }
            }
        });

您必须检查
onClick
append/replace
输出中的条件。在您的代码中,
joe.setOnClickListener
lee.setOnClickListener
因条件而启动。检查以下内容:

//to added or update the last name to the output(TextView)

joe.setOnClickListener(new View.OnClickListener() {
    @SuppressLint("SetTextI18n")
    @Override
    public void onClick(View v) {
        outputValue = output.getText().toString();

        if (!outputValue.contains("ricele")) {
            output.append(" ricele");
        }
    }
});

//to replace the last name "ricele" to "lee"

lee.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        outputValue = output.getText().toString();

        if (outputValue.contains("ricele")) {
            outputValue = outputValue.replace("ricele", "lee");
            output.setText(outputValue);
        }
    }
});

@WahyuRamadhan,请检查我的答案。希望它能解决您的问题谢谢先生,但我认为这没关系,因为它只是在第一个单词和第二个单词之间添加空格,我已经尝试删除前面的空格,但仍然无法修改我的答案。您应该在onclick中获取当前textview值。
//to added or update the last name to the output(TextView)

joe.setOnClickListener(new View.OnClickListener() {
    @SuppressLint("SetTextI18n")
    @Override
    public void onClick(View v) {
        outputValue = output.getText().toString();

        if (!outputValue.contains("ricele")) {
            output.append(" ricele");
        }
    }
});

//to replace the last name "ricele" to "lee"

lee.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        outputValue = output.getText().toString();

        if (outputValue.contains("ricele")) {
            outputValue = outputValue.replace("ricele", "lee");
            output.setText(outputValue);
        }
    }
});