Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 重命名变量以使XML ID更干净_Android_Xml_Kotlin_Rename - Fatal编程技术网

Android 重命名变量以使XML ID更干净

Android 重命名变量以使XML ID更干净,android,xml,kotlin,rename,Android,Xml,Kotlin,Rename,我一直想让代码更干净,但我不会放弃它。我是说 要命名XML中视图的ID,我使用匈牙利符号,如下所示: @BindView (R.id.tvExampleSectionEmptyBig) TextView tvEmptyBig; @BindView (R.id.tvExampleSectionEmptySmall) TextView tvEmptySmall; 例如:tvExampleSectionEmptyBig,tvexamplesectionemptyball 以前,使用黄油刀,我没有得

我一直想让代码更干净,但我不会放弃它。我是说

要命名XML中视图的ID,我使用匈牙利符号,如下所示:

@BindView (R.id.tvExampleSectionEmptyBig) TextView tvEmptyBig;
@BindView (R.id.tvExampleSectionEmptySmall) TextView tvEmptySmall;

例如:
tvExampleSectionEmptyBig
tvexamplesectionemptyball

以前,使用
黄油刀
,我没有得到太多的编码,因为要进行绑定,我做了如下操作:

@BindView (R.id.tvExampleSectionEmptyBig) TextView tvEmptyBig;
@BindView (R.id.tvExampleSectionEmptySmall) TextView tvEmptySmall;
代码更清晰、更可重用,因为匈牙利符号用于避免在不同活动、片段等中使用相同名称的ID之间的冲突。它在实践中并不比XML中更常见

发生了什么事?

Kotlin有
synthetic
,这使您的生活更轻松,因为通过放置视图的id,可以直接完成绑定,但是使用如此长的id,代码非常脏。。。此外,我在名为
ExampleSectionActivity
的活动中使用的所有视图都包含在其变量名
ExampleSection
中,这是有意义的

我想要什么?

当然有更好的解决方案,但最初,我觉得是通过删除给定的
字符串来实现重命名变量的方法。由于我在ID的所有名称中都遵循一个约定,因此它在内部是这样的:

val tvEmptyBig = tvExampleSectionEmptyBig
val tvEmptySmall = tvExampleSectionEmptySmall
当然,我想用一种自动化的方式

另一方面,我已经尝试在不使用的情况下命名ID,并小心导入,但目前,
synthetic
在这方面偶尔会失败,我必须不断地重建。特别是如果我打开另一个Android Studio实例,我通常会经常这样做,以咨询我的其他项目


有什么想法吗?:-)

在我看来,你能做的最简单、最干净的事情是:

private val myTextView: TextView
    get() = f_layoyt_text_view

通过这种方式,你不必使用可笑的ButterKnife,至少在2018年,甚至不必在几个星期内使用更不方便的
findViewById

,我已经想当然地认为,随着Android Studio的最新稳定更新,在不同的活动或片段中重复ID的名称是没有问题的。因此,不再需要放置长变量名。只需稍微注意一下进口,一切都像一个魅力,更具可读性和可重用性。:-)

但就目前而言,synthetic在这方面偶尔会失败,我不得不不断地进行重建——这是一个bug,将在AS的下一个版本中修复。对于您的问题,如果您需要xml中的长名称“TveExampleSectionEmptySall”,为什么不在代码中也需要它呢?还有,为什么您觉得长变量名会使代码变脏?表达性强于使用短名称,而只是使用短名称。我也需要在代码中使用它。为了更具可读性,我想重命名那些long变量名。我在帖子中试图解释。例如:在名为
ExampleSectionActivity
的活动中,我不需要名为
tvExampleSectionEmptyBig
的变量中的字符串
ExampleSection
。最好使用名称
tvEmptyBig
。那么为什么在xml中称为tvExampleSectionEmptyBig呢?为什么不使用tvEmptyBig2原因:如果我在其他XML中使用相同的名称调用了其他视图,那么我们可以使用conficts。另一个,如果我重构一个XML中变量的名称,我将直接更改另一个XML中变量的名称。@GabrielMoreno这取决于你的意思是什么?我想应用于我所有的活动和片段。我想要一种方法来循环所有视图并直接获得重命名的变量。