我正在获取上下文菜单项的标题,然后将其与字符串进行比较。下面的代码似乎没有按预期工作,为什么?
@Override
public boolean onContextItemSelected(MenuItem item) {
if (item.getTitle().equals(String.valueOf(R.string.item_edit_text))){ // <-- compared to string extract
Toast.makeText(this, "Match",Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "No Match",Toast.LENGTH_SHORT).show();
}
return super.onContextItemSelected(item);
}
item.getTitle
结果是“Edit”,R.string.item_edit_text
是“Edit”。那么为什么上面的代码会导致“不匹配”呢?
下面的代码似乎工作正常,但是,
@Override
public boolean onContextItemSelected(MenuItem item) {
if (item.getTitle().equals("Edit")){ // <--- Compared to hardcoded string
Toast.makeText(this, "Match",Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "No Match",Toast.LENGTH_SHORT).show();
}
return super.onContextItemSelected(item);
}
最佳答案
R.string.item_edit_text
可能是 EditText
类型。
当你写的时候:
String.valueOf(R.string.item_edit_text)
它最终返回 R.string.item_edit_text.toString()
但 R.string.item_edit_text.toString()
没有返回
EditText
的文本。
您应该执行 R.string.item_edit_text.getText().toString()
以在 getText()
返回的 Editable 实例上应用 tge toString()。
你可以这么写:
if (item.getTitle().equals(R.string.item_edit_text.getText().toString())){
或者:
if (item.getTitle().equals(getString(R.string.item_edit_text))){
关于java - 将字符串与android中的字符串提取进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41665658/