【问题标题】:Structurally replace methods that have a parameter name starting with在结构上替换参数名称以开头的方法
【发布时间】:2017-03-11 20:37:40
【问题描述】:

所以在我的代码中我有以下实例

view1.setBackgroundResource(R.drawable.is_bag);
view2.setBackgroundResource(R.drawable.is_bag);
view3.setBackgroundResource(R.color.red);

我正在尝试单独对所有 .setBackgroundResource(R.drawable.* 方法进行结构替换。到目前为止,这是我正在尝试的:

搜索模板:

$Instance$.setBackgroundResource($Parameter$)

编辑变量:

$Instance$  -> Text/regexp   = <empty> (which i understand = .*)
$Parameter$ -> Text/regexp   = .*R\.drawable\..*
           Minimum count = 1     // Minimum one Foo parameter
           Maximum count = 1     // Maximum one Foo parameter

由于某种原因,它拒绝匹配任何东西。如果我将$Parameter$ 更改为空或.*,那么它匹配所有setBackgroundResource 方法。

有人知道我在这里做错了什么吗?

【问题讨论】:

  • 奇怪的是,$Parameter$ 的文本/正则表达式似乎仅适用于实际变量名称(包含静态类型即 R.drawable 之后的所有内容)。如果将 Text/regexp 设置为 is_bag,它将找到所有以 is_bag 结尾的。好奇...也许只是使用正则表达式搜索和替换这个。

标签: android-studio intellij-idea structural-search


【解决方案1】:

试试

$Instance$.setBackgroundResource(R.drawable.$Parameter$)

InstanceParameter 均为空。

【讨论】:

  • 嗯我确实尝试过,由于某种原因,当我切换到那个时,setBackgroundResource(R.color.*) 也会被标记。我想知道是不是因为它与Android Studio中的R.x.x等资源常量有关?
  • 我想它不会解释为什么 R.drawable 明确地标记两者。嗯可能是一个错误?
  • 很可能是一个错误。刚刚使用不在 R 中的内部静态类进行了测试。当我搜索特定的内部类 imgur.com/a/9c7Xk 时,得到了整个封闭类的结果。内部静态类似乎在搜索中被忽略,它搜索在最顶层类声明的所有内容(即您的情况下的 R)错误报告! @KaushikGopal
  • 在刚刚发布的 IntelliJ IDEA 2017.2 中对该区域进行了一些修复,因此该查询有可能在那里正常工作。我认为修复程序也会在某个时候出现在 Android Studio 中。
猜你喜欢
  • 2015-03-13
  • 2015-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多