我知道有Alt + Enter组合可以将单个字符串提取到字符串资源中,但是我想知道有没有什么可以将我的项目中的所有字符串提取到字符串资源中?
此外,如果我制作其中一个,Android Studio不会制作相同的字符串到字符串资源。
String s = "Hello World";
String s2 = "Hello World";
例如,我把“Hello World”作为字符串资源,另一个仍然硬编码在同一个文件中,以及在项目中。
String s = getString(R.string.helloworld);
String s2 = "Hello World";
如果有人知道那样的事情。
5条答案
按热度按时间8fsztsew1#
我 相信 你 正在 寻找 的 快捷 方式 是 ( 在 Mac 上 ) Alt + Command + C
ma8fv8wu2#
作为您的要求,正如我所知,在Android Studio中没有这样的功能,你真的在寻找,但这里有一些替代方法,可以帮助你.
Analyze
〉Run Inspection ..
“,然后输入"Hardcoded strings"
。在整个项目中运行它,你会得到一个检查结果面板,它会显示项目的所有硬编码文本。然后按Alt + Enter,你会得到一个自动提取字符串的选项。3pvhb19x3#
对于XML布局文件中的硬编码字符串:
点击Analyze -〉Run inspection by name -〉enter Hardcoded strings -〉select the whole project -〉OK.在这里,你将从你的xml布局文件中得到所有的硬编码字符串,只有你可以通过以下方式提取到strings.xml中:
单击硬编码文本-〉Alt + Enter -〉从资源中提取-〉为该字符串输入相应的资源名称-〉OK
对于Java类代码中的硬编码字符串:
点击Analyze -〉Run inspection by name -〉enter Hardcoded texts -〉select the whole project -〉OK.在这里,你将从你的Java类文件中得到所有的硬编码字符串,只有你可以通过以下方式提取到strings.xml中:
单击硬编码文本-〉Alt + Enter -〉从资源中提取-〉为该字符串输入相应的资源名称-〉OK -〉为Java代码中创建的每个字符串资源添加getString。
因此,在Android Studio中,硬编码字符串-〉Java类代码,而硬编码文本-〉Xml布局文件。
sgtfey8w4#
在Android 3.2.1中,您可以转到
Edit->Find->Find In Path...
,然后搜索android:text="
,这将为您提供xml files
中所有硬编码字符串的列表。搜索
Toast.makeText
以查找java files
中的所有吐司项目。Search for
setText("
可搜索java files
中的文本集,依此类推。您可以像这样搜索要在整个项目中查找并替换的对象。
gcxthw6b5#
我编写了下面的脚本,从
activity.xml
文件中提取所有硬编码字符串,并将它们添加到strings.xml
中。(Bash/Linux):用法:
extractAll.sh activity_main.xml strings.xml
在进行更改之前备份原始文件。
最后注意:在我使用Android Studio创建的
strings.xml
文件的测试用例中,wc -l
返回的值比预期少1(我怀疑是因为最后一行没有换行符)。这导致sed -i
在倒数第三个位置插入新行,而不是预期的倒数第二个位置。我的修复方法是使用let
递增wc -l
的结果。参考资料:
What are invalid characters in XML
sed one-liner to convert all uppercase to lowercase?
How to process each output line in a loop?
How can I truncate a line of text longer than a given length?
Linux Shell Script - String Comparison with wildcards
How to insert a string into second to last line of a file
Check number of arguments passed to a Bash script
https://askubuntu.com/questions/385528/how-to-increment-a-variable-in-bash
https://docs.oracle.com/cd/E82085_01/150/funtional_artifacts_guide/or-fasg-standards.htm
https://tldp.org/LDP/abs/html/refcards.html#AEN22828