java - 将字符串与android中的字符串提取进行比较

标签 java android string types comparison

我正在获取上下文菜单项的标题,然后将其与字符串进行比较。下面的代码似乎没有按预期工作,为什么?

@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/

相关文章:

java - Guice 可以断言单例不是直接实例化的吗?

java - Future.cancel 和 ReentrantLocks

java - Try/Catch block 问题

android - Boot设备时,如果无法连接到网络,如何在android things上设置当前时间?

c# - 如何将字符串列表转换为 double ?

java - bufferedreader 后返回 null 的字符串

java - ResultSet 关闭后不允许进行操作。原因

java - 停止 jax-ws 创建本地绝对路径

android - 在 android 应用程序上进行 OTP 验证后,fabric digits 返回一个空的 phoneNumber 对象

java - java - 如何将具有空终止字符的字节数组转换为Java中的字符串?