Android:在 Activity 中声明 View 组件的最佳实践是啥? [关闭]
Posted
技术标签:
【中文标题】Android:在 Activity 中声明 View 组件的最佳实践是啥? [关闭]【英文标题】:Android: What is best practice for declaring View components in an Activity? [closed]Android:在 Activity 中声明 View 组件的最佳实践是什么? [关闭] 【发布时间】:2015-11-16 12:22:07 【问题描述】:一个典型的 android 活动。
public class MainActivity extends AppCompatActivity
/* Should I declare view components here? */
TextView textView;
Button button;
RecyclerView recyclerView;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
/* And then create them here */
textView = (TextView) findViewById(R.id.textview);
button = (Button) findViewById(R.id.button);
recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
/* Or is it better to declare and create them like this? */
Spinner spinner = (Spinner) findViewById(R.id.spinner);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
在这两种情况下,组件都会按预期工作并且可以按预期使用。但是,在您的主要活动或片段中声明类似的视图时,是否应该遵循编程实践或模式?还是根本不重要。
【问题讨论】:
【参考方案1】:这取决于!
如果您需要访问onCreate
之外的视图组件,在类的其他方法中,这些方法不是从onCreate
调用的,那么您可以选择将这些视图组件的引用存储为实例变量。这适用于文本视图、列表视图等可能需要从类的其他方法更新的内容。
如果您不需要onCreate
之外的视图组件,则无需将它们设为实例变量。这通常适用于按钮,一旦您定义了 setOnClickListener
,您可能不需要再次访问该组件。
很少有开发人员喜欢为所有视图组件声明实例变量。有些甚至将它们声明为static
变量,并从其他类访问它们——甚至滥用它在活动之间共享数据。在多成员团队中,这种约定很难维护——一些变量被声明为成员变量,而另一些则被遗漏了。很多时候,某些成员变量永远不会在 onCreate
之外访问,这会增加代码的混乱度。
【讨论】:
【参考方案2】:拇指规则,如果你想在其他函数中使用,请在类中声明
【讨论】:
【参考方案3】:这取决于你写什么。我会对此进行总结。
如果您在 onCreate 之外声明视图,您将能够在活动/片段中的任何方法中使用这些视图。
但是,如果您在 onCreate 之类的方法中声明视图,则根本无法在任何其他不同的方法中再次引用这些视图。它只能在您编写视图声明的方法中被引用。
但是,根据我的编码经验,我总是喜欢在 onCreate 之外声明它们。它具有更多的可访问性,您不会丢失任何东西。
【讨论】:
以上是关于Android:在 Activity 中声明 View 组件的最佳实践是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章