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